Click here to Skip to main content
15,867,308 members
Please Sign up or sign in to vote.
0.00/5 (No votes)
Goal:
Update the current and existing data of the row in the table kund based on new data. The new data is located in the class ContactInfo.

Problem:
I retrieve an error message saying "No persister for: data_layer.ContactInfo". I tried locating the root problem but I failed. I don't know how to solve it.

Information:
*New data row shall not be applied.
*I'm using Nhibernate, VS2013 ans SQL server 2012
*All column in the table kund shall not be updated. The column that shall be updated is written in the xml script.


C#
public void Test(ContactInfo pMyContactInfo)
{
    using (var transaction = _session.BeginTransaction())
    {
        _session.SaveOrUpdate(pMyContactInfo);

        transaction.Commit();  
    }

}



namespace data_layer
{
    public class ContactInfo
    {
        public virtual int PK_kund { get; set; }
        public virtual string Kortnummer { get; set; }
        public virtual string Personnummer { get; set; }
        public virtual string Fornamn { get; set; }
        public virtual string Efternamn { get; set; }
        public virtual string Adress { get; set; }
        public virtual string Postnummer { get; set; }
        public virtual string Ort { get; set; }
        public virtual string Datum { get; set; }
        public virtual string Mobilnummer { get; set; }
        public virtual string Hemtelefon { get; set; }
        public virtual string Kon { get; set; }

    }
}


XML
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" assembly="data_layer" namespace="data_layer">
  <class name="data_layer.ContactInfo,data_layer" table="Kund">
    <id column="PK_kund" type="Int32" unsaved-value="0">
      <generator class="native">
      </generator>
    </id>
    <property name="Kortnummer" column="Kortnummer" type="string" not-null="true"></property>
    <property name="Personnummer" column="Personnummer" type="string" not-null="true"></property>
    <property name="Fornamn" column="Fornamn" type="string" not-null="true"></property>
    <property name="Efternamn" column="Efternamn" type="string" not-null="true"></property>
    <property name="Adress" column="Adress" type="string" not-null="true"></property>
    <property name="Postnummer" column="Postnummer" type="string" not-null="true"></property>
    <property name="Ort" column="Ort" type="string" not-null="true"></property>
    <property name="Mobilnummer" column="Mobilnummer" type="string" not-null="true"></property>
    <property name="Hemtelefon" column="Hemtelefon" type="string" not-null="true"></property>
    <property name="Kon" column="Kon" type="string" not-null="true"></property>
  </class>
</hibernate-mapping>


SQL
SELECT [PK_kund]
      ,[Kortnummer]
      ,[Personnummer]
      ,[Fornamn]
      ,[Efternamn]
      ,[Adress]
      ,[Postnummer]
      ,[Ort]
      ,[Datum]
      ,[FK_foretag]
      ,[Mobilnummer]
      ,[Hemtelefon]
      ,[Kon]
  FROM [Active_system].[dbo].[Kund]


NHibernate.MappingException > StackTrace
at NHibernate.Impl.SessionFactoryImpl.GetEntityPersister(String entityName) in p:\nhibernate-core\src\NHibernate\Impl\SessionFactoryImpl.cs:line 473
at NHibernate.Impl.SessionImpl.GetEntityPersister(String entityName, Object obj) in p:\nhibernate-core\src\NHibernate\Impl\SessionImpl.cs:line 2789
at NHibernate.Engine.ForeignKeys.IsTransient(String entityName, Object entity, Nullable`1 assumed, ISessionImplementor session) in p:\nhibernate-core\src\NHibernate\Engine\ForeignKeys.cs:line 193
at NHibernate.Event.Default.AbstractSaveEventListener.GetEntityState(Object entity, String entityName, EntityEntry entry, ISessionImplementor source) in p:\nhibernate-core\src\NHibernate\Event\Default\AbstractSaveEventListener.cs:line 425
at NHibernate.Event.Default.DefaultSaveOrUpdateEventListener.PerformSaveOrUpdate(SaveOrUpdateEvent event) in p:\nhibernate-core\src\NHibernate\Event\Default\DefaultSaveOrUpdateEventListener.cs:line 64
at NHibernate.Event.Default.DefaultSaveOrUpdateEventListener.OnSaveOrUpdate(SaveOrUpdateEvent event) in p:\nhibernate-core\src\NHibernate\Event\Default\DefaultSaveOrUpdateEventListener.cs:line 53
at NHibernate.Impl.SessionImpl.FireSaveOrUpdate(SaveOrUpdateEvent event) in p:\nhibernate-core\src\NHibernate\Impl\SessionImpl.cs:line 2687
at NHibernate.Impl.SessionImpl.SaveOrUpdate(Object obj) in p:\nhibernate-core\src\NHibernate\Impl\SessionImpl.cs:line 551
at data_layer.NhibernateDataProvider.Test(ContactInfo pMyContactInfo) in c:\arbete\main_system\data_layer\NhibernateDataProvider.cs:line 271
at usercontrol_kund.Kund_specification_redigering.btn_ok_Click(Object sender, RoutedEventArgs e) in c:\arbete\main_system\usercontrol_kund\Kund_specification_redigering.xaml.cs:line 66
at System.Windows.RoutedEventHandlerInfo.InvokeHandler(Object target, RoutedEventArgs routedEventArgs)
at System.Windows.EventRoute.InvokeHandlersImpl(Object source, RoutedEventArgs args, Boolean reRaised)
at System.Windows.UIElement.RaiseEventImpl(DependencyObject sender, RoutedEventArgs args)
at System.Windows.UIElement.RaiseEvent(RoutedEventArgs e)
at System.Windows.Controls.Primitives.ButtonBase.OnClick()
at System.Windows.Controls.Button.OnClick()
at System.Windows.Controls.Primitives.ButtonBase.OnMouseLeftButtonUp(MouseButtonEventArgs e)
at System.Windows.UIElement.OnMouseLeftButtonUpThunk(Object sender, MouseButtonEventArgs e)
at System.Windows.Input.MouseButtonEventArgs.InvokeEventHandler(Delegate genericHandler, Object genericTarget)
at System.Windows.RoutedEventArgs.InvokeHandler(Delegate handler, Object target)
at System.Windows.RoutedEventHandlerInfo.InvokeHandler(Object target, RoutedEventArgs routedEventArgs)
at System.Windows.EventRoute.InvokeHandlersImpl(Object source, RoutedEventArgs args, Boolean reRaised)
at System.Windows.UIElement.ReRaiseEventAs(DependencyObject sender, RoutedEventArgs args, RoutedEvent newEvent)
at System.Windows.UIElement.OnMouseUpThunk(Object sender, MouseButtonEventArgs e)
at System.Windows.Input.MouseButtonEventArgs.InvokeEventHandler(Delegate genericHandler, Object genericTarget)
at System.Windows.RoutedEventArgs.InvokeHandler(Delegate handler, Object target)
at System.Windows.RoutedEventHandlerInfo.InvokeHandler(Object target, RoutedEventArgs routedEventArgs)
at System.Windows.EventRoute.InvokeHandlersImpl(Object source, RoutedEventArgs args, Boolean reRaised)
at System.Windows.UIElement.RaiseEventImpl(DependencyObject sender, RoutedEventArgs args)
at System.Windows.UIElement.RaiseTrustedEvent(RoutedEventArgs args)
at System.Windows.UIElement.RaiseEvent(RoutedEventArgs args, Boolean trusted)
at System.Windows.Input.InputManager.ProcessStagingArea()
at System.Windows.Input.InputManager.ProcessInput(InputEventArgs input)
at System.Windows.Input.InputProviderSite.ReportInput(InputReport inputReport)
at System.Windows.Interop.HwndMouseInputProvider.ReportInput(IntPtr hwnd, InputMode mode, Int32 timestamp, RawMouseActions actions, Int32 x, Int32 y, Int32 wheel)
at System.Windows.Interop.HwndMouseInputProvider.FilterMessage(IntPtr hwnd, WindowMessage msg, IntPtr wParam, IntPtr lParam, Boolean& handled)
at System.Windows.Interop.HwndSource.InputFilterMessage(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean& handled)
at MS.Win32.HwndWrapper.WndProc(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean& handled)
at MS.Win32.HwndSubclass.DispatcherCallbackOperation(Object o)
at System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Int32 numArgs)
at MS.Internal.Threading.ExceptionFilterHelper.TryCatchWhen(Object source, Delegate method, Object args, Int32 numArgs, Delegate catchHandler)
at System.Windows.Threading.Dispatcher.LegacyInvokeImpl(DispatcherPriority priority, TimeSpan timeout, Delegate method, Object args, Int32 numArgs)
at MS.Win32.HwndSubclass.SubclassWndProc(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam)
at MS.Win32.UnsafeNativeMethods.DispatchMessage(MSG& msg)
at System.Windows.Threading.Dispatcher.PushFrameImpl(DispatcherFrame frame)
at System.Windows.Threading.Dispatcher.PushFrame(DispatcherFrame frame)
at System.Windows.Window.ShowHelper(Object booleanBox)
at System.Windows.Window.Show()
at System.Windows.Window.ShowDialog()
Posted
Comments
Kishor Deshpande 4-Aug-14 1:57am    
Try this: You might check with the mapping: http://stackoverflow.com/questions/57804/nhibernate-mappingexception-no-persister-for-xyz

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900