【发布时间】:2010-05-19 15:21:55
【问题描述】:
我想写一个富域类如
public class Product
{
public IEnumerable<Photo> Photos {get; private set;}
public void AddPhoto(){...}
public void RemovePhoto(){...}
}
但是实体框架(V4 代码优先方法)需要 ICollection 类型来延迟加载!上述代码不再按设计工作,因为客户端可以绕过 AddPhoto / RemovePhoto 方法并直接调用 ICollection 上的 add 方法。这不好。
public class Product
{
public ICollection<Photo> Photos {get; private set;} //Bad
public void AddPhoto(){...}
public void RemovePhoto(){...}
}
尝试使用 EF4 实现 DDD 确实令人沮丧。他们为什么选择 ICollection 进行延迟加载?
我该如何克服这个问题? NHibernate 是否为我提供了更好的 DDD 体验?
【问题讨论】:
-
自己想弄清楚这一点。我知道要走的路就是你描述的路。但是如何?现在也可以在 EF 4.1 中使用吗?还是您找到了解决方案?
标签: entity-framework domain-driven-design lazy-loading