NHibernate POCO建模实例创建其他实例

时间:2011-12-08 21:08:03

标签: nhibernate

这是一个困扰我一段时间的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实例,但新创建的实例不会持久保存到DB,除非:

  1. BaseEntity或派生类知道NHibernate 会话(打破POCO)
  2. 有一个服务层(或存储库)调用ISession.Save() 新创建的Order对象需要知道NHibernate
  3. 所以,这让我相信我的NHibernate POCO类本身不应该包含任何业务规则(并且应该只保留属性和构造函数),但是域模型上面的服务层应该是逻辑应该存在。据推测,此服务层将通过依赖注入来接收其持久性功能。

    任何人都在关注确认/否认我在POCO模型中不应存在业务方法的断言?

    谢谢,

    大卫

1 个答案:

答案 0 :(得分:0)

域模型中的业务逻辑是首先拥有模型的重点。

您可以使用Nhibernate的级联功能,如果拥有该订单的客户持续存在,您的订单将自动保留。