最近、Automapped FNH / NH プロジェクトを NH 3.2 にアップグレードしましたが、多くの問題が発生しています。
オブジェクト モデルには、「ゲッター」のみを持つ多くのプロパティがあります。
public virtual float Polydispersity
{
get { return MeasurementRun.PolyDispersity; }
}
これは以前は正常に機能していましたが、「プロパティのセッターが見つかりませんでした」というエラーが発生するようになりました。
なんらかの理由で自動マッピングが DB テーブルの作成に黙って失敗し、DB に保存するときに「永続化なし」エラーが発生したため、これを見つけるのは困難でした。詳細については、こちらを参照してください。
これは、LinFu が NH に組み込まれたためですか? プライベートセッターが機能しなくなったことは知っていますが、これは同様の問題のようです。
以前は Castle を使用していましたが、現在 NH が他のすべての DLL を必要としない点が気に入っていますが、オブジェクト モデルの大部分が壊れる場合はそうではありません。
これを回避する方法について何か提案はありますか?
スタックトレース
FluentNHibernate.Cfg.FluentConfigurationException: SessionFactory の作成中に無効または不完全な構成が使用されました。詳細については、PotentialReasons コレクションと InnerException を確認してください。
---> NHibernate.PropertyNotFoundException: NHibernate.Properties.BasicPropertyAccessor.GetSetter(Type type, String propertyName) の NHibernate.Mapping.Property.GetSetter(Type clazz) で NHibernate.Tuple.Entity.PocoEntityTuplizer.BuildPropertySetter(Property mappedProperty, PersistentClass mappedEntity) で NHibernate.Tuple.Entity.AbstractEntityTuplizer..ctor(EntityMetamodel entityMetamodel, PersistentClass mappingInfo) で NHibernate.Tuple.Entity.PocoEntityTuplizer..ctor(EntityMetamodel) NHibernate.Tuple.Entity の NHibernate.Tuple.Entity.EntityEntityModeToTuplizerMapping..ctor(PersistentClass MappedEntity, EntityMetamodel em) の NHibernate.Tuple.Entity.NHibernate.Persister.Entity.AbstractEntityPersister..ctor(PersistentClass persistentClass、ICacheConcurrencyStrategy キャッシュ、ISessionFactoryImplementor ファクトリ) の EntityMetamodel..ctor(PersistentClasspersistentClass、ISessionFactoryImplementor sessionFactory) ISessionFactoryImplementor ファクトリ、IMapping マッピング) で NHibernate.Persister.PersisterFactory.CreateClassPersister(PersistentClass モデル、ICacheConcurrencyStrategy キャッシュ、ISessionFactoryImplementor ファクトリ、IMapping cfg) で NHibernate.Impl.SessionFactoryImpl..ctor(構成 cfg、IMapping マッピング、設定設定、EventListeners リスナー) でNHibernate.Cfg.Configuration.BuildSessionFactory() at FluentNHibernate.Cfg.FluentConfiguration.BuildSessionFactory() --- 内部例外スタック トレースの終了 --- FluentNHibernate.Cfg.FluentConfiguration.BuildSessionFactory() at BI_OverlordPackageCore.OfeDatabase.CreateSqliteSessionFactory() in C:\Bicw_Dev\Bic .Net\Private Projects\NHibernate\FNH 1.3 Mapping Bug\OfeDatabase.cs: C:\Bicw_Dev\Bic.Net\Private Projects\NHibernate\FNH 1.3 Mapping Bug\OfeDatabase.cs の BI_OverlordPackageCore.OfeDatabase.GetMainSession() の 192 行: C:\Bicw_Dev\Bic.Net\Private Projects\NHibernate\FNH 1.3 Mapping Bug\OfeDatabase.cs:line 305 at FNH_1._3_Mapping_Bug.Form1.button1_Click( C:\Bicw_Dev\Bic.Net\Private Projects\NHibernate\FNH 1 のオブジェクト送信者、EventArgs e)。3 System.Windows.Forms.Button.OnMouseUp(MouseEventArgs) で System.Windows.Forms.Button.OnClick(EventArgs e) で System.Windows.Forms.Control.OnClick(EventArgs e) で Bug\Form1.cs:line 23 をマッピングします。 mevent) で System.Windows.Forms.Control.WmMouseUp(Message& m、MouseButtons ボタン、Int32 クリック) で System.Windows.Forms.Control.WndProc(Message& m) で System.Windows.Forms.ButtonBase.WndProc(Message& m) でSystem.Windows.Forms.Button.WndProc(Message& m) で System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m) で System.Windows.Forms.Control.Control.ControlNativeWindow.WndProc(Message& m) で System.Windows .Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)OnClick(EventArgs e) で System.Windows.Forms.Button.OnClick(EventArgs e) で System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent) で System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons ボタン, Int32 クリック) System.Windows.Forms.Control.WndProc(Message& m) で System.Windows.Forms.ButtonBase.WndProc(Message& m) で System.Windows.Forms.Button.WndProc(Message& m) で System.Windows。 Forms.Control.ControlNativeWindow.OnMessage(Message& m) System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m) で System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)OnClick(EventArgs e) で System.Windows.Forms.Button.OnClick(EventArgs e) で System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent) で System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons ボタン, Int32 クリック) System.Windows.Forms.Control.WndProc(Message& m) で System.Windows.Forms.ButtonBase.WndProc(Message& m) で System.Windows.Forms.Button.WndProc(Message& m) で System.Windows。 Forms.Control.ControlNativeWindow.OnMessage(Message& m) System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m) で System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)System.Windows.Forms.ButtonBase.WndProc(Message& m) で System.Windows.Forms.Button.WndProc( System.Windows.Forms.Control.Control.ControlNativeWindow.OnMessage(Message& m) で System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m) で System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32メッセージ、IntPtr wparam、IntPtr lparam)System.Windows.Forms.ButtonBase.WndProc(Message& m) で System.Windows.Forms.Button.WndProc( System.Windows.Forms.Control.Control.ControlNativeWindow.OnMessage(Message& m) で System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m) で System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32メッセージ、IntPtr wparam、IntPtr lparam)System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd、Int32 msg、IntPtr wparam、IntPtr lparam) の Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd、Int32 msg、IntPtr wparam、IntPtr lparam) の Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)