我们为每个对象创建了具有重复选项的屏幕。例如:在创建新客户以及详细信息时,用户可以选择现有客户来复制从现有用户到新用户的组。所以我想知道如何为1:n和m:n场景分配新客户的属性。
对于“客户”和“客户群”。以下方法是否可行?
Customer existing = repo<Customer>(id);
Customer newCust = new Customer();
for(var group in existing.Groups)
newCust.CustomerGroups.Add(new CustomerGroup(){ **AllpropertiesexceptID**, **Customer=newCust** } );
对于Order和OrderItems,由于其m:n关系,只需使用新订单附加现有项目。
订单现有= repo(id);
订购newOrder = new Order();
for(now.Items中的var项)
newOrder.Items.Add(项目);
是否需要为现有订单或客户执行Session.Evict以执行这些操作。
答案 0 :(得分:0)
你可能想的太多了。 :)继续前进并创建单独的相似对象,假装NHibernate甚至没有。只要新实例具有不同(未设置)的标识属性,NHibernate甚至不会意识到它们是“副本”。