遅延読み込みを構成すると、オブジェクトの比較に関する問題が発生します。各ドメイン エンティティ クラス内のオーバーライドされた Equals メソッドには、次の行が含まれています。
if (obj == null || !obj.GetType().Equals(GetType()))
obj はプロキシ インスタンスであるため、型の比較は明らかに失敗します。オブジェクトのプロキシを解除して実際のインスタンスを返す NHibernate スニペットをいくつか見てきました。しかし、ドメイン駆動型の設計を実施しているため、ドメイン レイヤー内に ORM 固有のコードは必要ありません。また、呼び出し元は ORM 固有のコードを含まないアプリケーション層であるため、呼び出し元側でインスタンスのプロキシを解除することはできません [例: foo.Equals(Unproxy(bar))] (すべての NHibernate 依存関係は Windsor によって注入されます)。
簡単に言うと、実際のインスタンスを取得するための汎用コードはありますか?