0

我们为每个对象创建了带有重复选项的屏幕。例如:在创建新客户以及详细信息时,用户可以选择现有客户将关联的组从现有用户复制到新用户。所以我想知道如何为 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(var item in existing.Items) newOrder.Items.Add(item);

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

4

1 回答 1

0

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

于 2012-09-10T21:45:12.787 回答