配置了延遲加載後,我遇到了有關對象比較的問題。我的被覆蓋的等號方法中的每個域實體類中包含以下行:NHibernate延遲加載和對象比較
if (obj == null || !obj.GetType().Equals(GetType()))
顯然,作爲obj是一個代理實例的類型的比較將失敗。我已經看到了一些NHibernate片段,它們可以解析一個對象並返回實例。但是,當我執行一個域驅動設計時,我不想在我的域層中使用任何特定於ORM的代碼。 我也不能unproxy在來電方[例如作爲調用者的foo.Equals(Unproxy(bar))]是我的應用程序層,它也不包含任何特定於ORM的代碼(所有NHibernate依賴項都由Windsor注入)。
長話短說:有沒有任何通用的代碼來獲得真實的實例?
爲什麼你想獲得平等比較的類型?你的實體是否有自然的身份進行比較?如果它是一個值對象,你會比較屬性... – MattDavey
那麼,但如果我只比較自然id,我得到了域對象類型A,B和實例A a,B b和a.id = b.id,即使對象完全不同,我的Equals方法也會返回true。例如。一輛id = 1的車和一條狗將被視爲真實。 – mbue
啊,我以爲你在說'IEquatable.Equals' - 我的錯! – MattDavey