【发布时间】:2011-12-08 21:08:02
【问题描述】:
这是一个困扰我一段时间的 Nhibernate 问题......
如果我将一个简单的订单输入域建模为:
public class Order: BaseEntity
{
public virtual Customer Customer {get; set;}
public Order(Customer customer)
{
...
}
}
public class Customer: BaseEntity
{
public virtual string Name {get; set;}
public virtual Order CreateOrder()
{
return new Order(this);
}
}
虽然上面的代码工作创建了一个 Order 实例,但新创建的实例不会被持久化到数据库中,除非:
- BaseEntity 或派生类知道 NHibernate 会话(打破 POCO)
- 有一个服务层(或存储库)调用 ISession.Save() 新创建的需要 NHibernate 感知的 Order 对象
所以,这让我相信我的 NHibernate POCO 类本身不应该包含我们的任何业务规则(并且应该只保留属性和构造函数),但是域模型“之上”的服务层应该是逻辑应该存在。据推测,该服务层将通过依赖注入接收其持久性功能。
有人愿意确认/否认我关于业务方法不应该存在于 POCO 模型中的断言吗?
谢谢,
大卫
【问题讨论】:
标签: nhibernate