Я пытаюсь создать проект с ORM NHibernate, и в тот момент, когда я подумал, что все, что я закончил, дает мне NHibernate.MappingException: нет стойкая бактерия за исключением Я читал, что проблема может быть, что я не добавил сборку в конфигурационном файле, но я сделал это, а также не зафиксировано ...NHibernate.MappingException: Нет persister для: NHibernateExperiment.Player - я не могу найти решение
Если кто-то litle time, помогите мне, пожалуйста, исправить проблему.
здесь код, который я называю, чтобы добавить новый объект игрока
private void btnInsert_Click(object sender, EventArgs e)
{
Player playerData = new Player();
SetPlayerInfo(playerData);
using (ISession session = SessionFactory.OpenSession)
{
using (ITransaction transaction = session.BeginTransaction())
{
try
{
session.Save(playerData); // here it spits
transaction.Commit();
GetPlayerInfo();
}
catch (Exception ex)
{
transaction.Rollback();
throw ex;
}
}
}
}
private void GetPlayerInfo()
{
using (ISession session = SessionFactory.OpenSession)
{
IQuery query = session.CreateQuery("FROM Player");
IList<Player> pInfos = query.List<Player>();
dgvDisplay.DataSource = pInfos;
}
}
private void SetPlayerInfo(Player playerData)
{
playerData.PlayerName = tbxName.Text;
playerData.PlayerAge = Convert.ToInt32(tbxAge.Text);
playerData.DOJ = Convert.ToDateTime(dtpDOJ.Text);
playerData.BelongsTo = cmbBelongsTo.SelectedItem.ToString();
}
здесь отображение Player.hbm.xml код
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" auto-import="true">
<class name="NHibernateExperiment.Player, NHibernateExperiment" lazy="true">
<id name="PlayerId">
<generator class="native"/>
</id>
<property name="PlayerName" column ="PlayerName"/>
<property name="PlayerAge" column ="PlayerAge"/>
<property name="DOJ" column="DOJ"/>
<property name="BelongsTo" column="BelongsTo"/>
</class>
</hibernate-mapping>
вот App. config Код
<configuration>
<configSections>
<section name="hibernate-configuration" type="NHibernate.Cfg.ConfigurationSectionHandler, NHibernate" />
</configSections>
<hibernate-configuration xmlns="urn:nhibernate-configuration-2.2">
<session-factory>
<property name="connection.provider">NHibernate.Connection.DriverConnectionProvider</property>
<property name="connection.driver_class">NHibernate.Driver.SqlClientDriver</property>
<property name="connection.connection_string">Server=GRITCAN;database=testDB;Integrated Security=SSPI;</property>
<property name="dialect">NHibernate.Dialect.MsSql2008Dialect</property>
<property name="show_sql">true</property>
<property name='proxyfactory.factory_class'>NHibernate.ByteCode.LinFu.ProxyFactoryFactory, NHibernate.ByteCode.LinFu</property>
</session-factory>
</hibernate-configuration>
</configuration>
вот StackTrace
в NHibernateExperiment.Form1.btnInsert_Click (отправитель объекта, EventArgs е) в Е: \ Проекты \ Тесты \ NHibernate \ NHibernateExperiment \ NHibernateExperiment \ Form1.cs: строка 72 в системе. Windows.Forms.Control.OnClick (EventArgs e) в System.Windows.Forms.Button.OnClick (EventArgs e) в System.Windows.Forms.Button.OnMouseUp (MouseEventArgs mevent) в System.Windows.Forms.Control .WmMouseUp (сообщение & m, кнопка мыши, кнопки Int32) в System.Windows.Forms.Control.WndProc (сообщение & m) at System.Windows.Forms.ButtonBase.WndProc (Message & м) на System.Windows.Forms.Button.WndProc (Сообщение & м) на System.Windows.Forms.Control.ControlNativeWindow.OnMessage (Сообщение & м) в System.Windows.Forms.Control.ControlNativeWindow.WndProc (Message & м) на System.Windows.Forms.NativeWindow.DebuggableCallback (IntPtr HWND, Int32 сообщ, IntPtr WPARAM, IntPtr LPARAM) в System.Windows.Forms.UnsafeNativeMethods. DispatchMessageW (MSG & msg) в System.Windows.Forms.Application.ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop (IntPtr dwComponentID, причина Int32, Int32 pvLoopData) в System.Windows.Forms.Applicat ion.ThreadContext.RunMessageLoopInner (Int32 причина, ApplicationContext контекст) в System.Windows.Forms.Application.ThreadContext.RunMessageLoop (Int32 причине, ApplicationContext контекст) в System.Windows.Forms.Application.Run (Форма MainForm) в NHibernateExperiment .Program.Main() в E: \ projects \ tests \ NHibernate \ NHibernateExperiment \ NHibernateExperiment \ Program.cs: строка 16 в System.AppDomain._nExecuteAssembly (сборка RuntimeAssembly, String [] args) в System.AppDomain.ExecuteAssembly (String assemblyFile, Evidence assemblySecurity, String [] args) в Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly() в System.Threading.ThreadHelper.ThreadStart_Context (состояние объекта) в System.Threading.ExecutionContext.Run (ИсполнениеКонтекстовое исполнениеКонтекст, ContextCallback callback , Состояние объекта, Bool ean ignoreSyncCtx) в System.Threading.ExecutionContext.Run (ИсполнениеКонтекстовое исполнениеКонтекст, Обратный вызов ContextCallback, Состояние объекта) в System.Threading.ThreadHelper.ThreadStart()
Я добавил следующие 2 ссылки на проект NHibernate.dll и NHibernate.ByteCode.LinFu.dll
Большое спасибо за вашу помощь!
Thank you BOYS. Build Action для .hbm.xml файл был Контент. Как вы мне предложили, я изменил его на Встраиваемый ресурс и все работает отлично :)
Убедитесь, что изменить * Строить Действие * для '.hbm.xml' файла, * Embedded Resource *. –
Спасибо. Файл ** Build Action ** для **. Hbm.xml ** был ** Содержание **. Я изменил его на ** Embedded Resource ** и все отлично работает :) – meorfi