我想编写一个类似于以下的富领域类:
public class Product
{
public IEnumerable<Photo> Photos {get; private set;}
public void AddPhoto(){...}
public void RemovePhoto(){...}
}
但是使用实体框架(V4 Code First方法)需要使用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体验?