配置了延迟加载后,我遇到了关于对象比较的问题。我在每个域实体类中重写的 Equals 方法包含以下行:
if (obj == null || !obj.GetType().Equals(GetType()))
显然,类型比较将失败,因为 obj 是代理实例。我已经看到了一些 NHibernate 片段,它们取消代理对象并返回真实实例。但是当我强制执行域驱动设计时,我不希望在我的域层中有任何特定于 ORM 的代码。我也无法取消代理调用方的实例 [例如 foo.Equals(Unproxy(bar))],因为调用方是我的应用程序层,它也不包含任何 ORM 特定的代码(所有 NHibernate 依赖项都由 Windsor 注入)。
长话短说:是否有任何通用代码来获取真实实例?