通过在Nhibernate中附加现有实体属性来插入新对象

时间:2012-09-06 01:52:54

标签: asp.net-mvc nhibernate fluent-nhibernate

我们为每个对象创建了具有重复选项的屏幕。例如:在创建新客户以及详细信息时,用户可以选择现有客户来复制从现有用户到新用户的组。所以我想知道如何为1:n和m:n场景分配新客户的属性。

  1. 对于“客户”和“客户群”。以下方法是否可行?

    Customer existing = repo<Customer>(id);
    
    Customer newCust = new Customer();
    for(var group in existing.Groups)
    newCust.CustomerGroups.Add(new CustomerGroup(){ **AllpropertiesexceptID**, **Customer=newCust** } );
    
  2. 对于Order和OrderItems,由于其m:n关系,只需使用新订单附加现有项目。

    订单现有= repo(id); 订购newOrder = new Order();
    for(now.Items中的var项) newOrder.Items.Add(项目);

  3. 是否需要为现有订单或客户执行Session.Evict以执行这些操作。

1 个答案:

答案 0 :(得分:0)

你可能想的太多了。 :)继续前进并创建单独的相似对象,假装NHibernate甚至没有。只要新实例具有不同(未设置)的标识属性,NHibernate甚至不会意识到它们是“副本”。