c# – 当我向其中添加一个项目时,为什么NHibernate会删除并重新
我正在使用NHibernate进行一些测试,我目前有两个映射实体,Orders和Products.一如既往,Order有一系列产品,我将其映射为:
<bag name="Products" cascade="all" lazy="true"> <key column ="Order_ID" /> <many-to-many class="Product" column="Product_ID" /> </bag> 在C#方面: public virtual IList<Product> Products { get { return _Products; } set { _Products = value; } } private IList<Product> _Products = new List<Product>(); 如果我在数据库中有一个持久订单(约翰的订单),其产品集合中有一些项目(苹果,橙子和椰子),我尝试在集合中添加一个新项目(香蕉)我可以看到从SQL输出中,NHibernate正在做这样的事情: INSERT INTO Products_Table (Product_Name,Product_ID) VALUES ('Banana',@Banana_ID) DELETE FROM Products WHERE Order_ID = @Johns_Order_ID INSERT INTO Products (Order_ID,Product_ID) VALUES (@Johns_Order_ID,@Apple_ID) INSERT INTO Products (Order_ID,@Orange_ID) INSERT INTO Products (Order_ID,@Coconut_ID) INSERT INTO Products (Order_ID,@Banana_ID) 而不是简单地做这样的事情: INSERT INTO Products_Table (Product_Name,@Banana_ID) INSERT INTO Products (Order_ID,@Banana_ID) 那么为什么NHibernate会删除Products表中的所有关联,以便在我只是尝试在其中插入新产品时再次重新创建它们?怎么避免呢? 提前致谢! PS:我试图使用这个SO Question中建议的逆映射属性,但即使新产品被保存,它与订单的关联也没有. 编辑: 这是我用来修改产品列表的代码: Order order = session.Load<Order>(orderId); order.Products.Add(new Product() { Name = "Banana" }); using (ITransaction transaction = session.BeginTransaction()) { session.Update(order); transaction.Commit(); } 解决方法
在SO:
NHibernate Many-To-Many Is Deleting All Associations Before Inserting上已经存在类似的问题
来自NHibernate的documentation:
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |