mbu*_*bue 3 c# nhibernate lazy-loading
配置延迟加载后,我遇到了有关对象比较的问题.我在每个域实体类中的重写Equals方法包含以下行:
if (obj == null || !obj.GetType().Equals(GetType()))
Run Code Online (Sandbox Code Playgroud)
显然,类型比较将失败,因为obj是一个代理实例.我已经看过一些NHibernate-snippets,它们解开一个对象并返回真实实例.但是当我强制执行域驱动设计时,我不希望在我的域层中使用任何特定于ORM的代码.我还不能unproxy呼叫者侧[例如foo.Equals(Unproxy(巴))]作为呼叫者是这也不包含任何特定的ORM代码(所有NHibernate的依赖关系是由温莎注入)我的应用层的实例.
长话短说:是否有任何通用代码来获取真实实例?
解决这个问题的方法是做一个演员:
public class Person
{
public int Id { get; set; }
public override bool Equals(object obj)
{
var person = obj as Person;
if (person == null)
{
return false;
}
return person.Id == this.Id;
}
}
Run Code Online (Sandbox Code Playgroud)
演员的作品是因为proxy
你的班级继承了(例如PersonProxy : Person
)
空检查是不必要的,因为as
如果obj
为null或者不是可以作为人员转换的对象,则转换将仅返回null .
归档时间: |
|
查看次数: |
1214 次 |
最近记录: |