NHibernate ORMを使用してプロジェクトを作成しようとすると、完了したと思った瞬間にNHibernate.MappingExceptionが発生します。例外の永続化機能はありません。問題は、アセンブリを追加しなかったことが問題である可能性があることを読みました。設定ファイルにありますが、私はこれを行いました、そしてまたそれは修正されていません...
誰かが少し時間があれば、私が問題を解決するのを手伝ってください。
これが、新しいPlayerオブジェクトを追加するために呼び出すコードです。
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(Object sender、EventArgs e)in E:\ projects \ tests \ NHibernate \ NHibernateExperiment \ NHibernateExperiment \ Form1.cs:line 72 at System.Windows.Forms.Control.OnClick(EventArgs e)atSystem。 Windows.Forms.Button.OnClick(EventArgs e)at System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)at System.Windows.Forms.Control.WmMouseUp(Message&m、MouseButtons button、Int32 clicks)atSystem.Windows。 Form.Windows.Forms.Button.WndProc(Message&m)at System.Windows.Forms.ButtonBase.WndProc(Message&m)at System.Windows.Forms.Button.WndProc(Message&m)at System.Windows.Forms.Control.ControlNativeWindow.OnMessage( Message&m)at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message&m)at System.Windows.Forms.NativeWindow.DebuggableCallback(IntPtr hWnd、Int32 msg、IntPtr wparam、IntPtr lparam)at System.Windows.Forms.UnsafeNativeMethods.DispatchMessageW(MSG&msg)at System.Windows.Forms.Application.ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop(IntPtr dwComponentID、Int32 reason、Int32 pvLoopData)at System.Windows.Forms.Application.ThreadContext.RunMessageLoop(Int32 reason、ApplicationContext context)at System.Windows.Forms.Application.Run(Form mainForm)のSystem.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(Int32 reason、ApplicationContext context) )at NHibernateExperiment.Program.Main()in E:\ projects \ tests \ NHibernate \ NHibernateExperiment \ NHibernateExperiment \ Program.cs:line 16 at System.AppDomain._nExecuteAssembly(RuntimeAssembly assembly、String [] args)atSystem.AppDomain.ExecuteAssembly (文字列アセンブリファイル、エビデンスアセンブリセキュリティ、String [] args)at Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()at System.Threading.ThreadHelper.ThreadStart_Context(Object state)at System.Threading.ExecutionContext.Run(ExecutionContext executeContext、ContextCallback callback、Object state、Boolean ignoreSyncCtx) System.Threading.ExecutionContext.Run(ExecutionContextexecutionContext、ContextCallbackコールバック、オブジェクト状態)でSystem.Threading.ThreadHelper.ThreadStart()でオブジェクトの状態)System.Threading.ThreadHelper.ThreadStart()オブジェクトの状態)System.Threading.ThreadHelper.ThreadStart()
プロジェクト NHibernate.dllとNHibernate.ByteCode.LinFu.dllに次の2つの参照を追加しました
あなたの助けをどうもありがとう!
ありがとうBOYS。.hbm.xmlファイルのビルドアクションはContentでした。あなたが私に提案したように、私はそれを埋め込みリソースに変更しました、そしてすべてがうまくいきます:)