配置了延迟加载后,我遇到了有关对象比较的问题。我的被覆盖的等号方法中的每个域实体类中包含以下行: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