在LINQ中插入[Order]和[OrderItems]

时间:2009-10-27 17:21:14

标签: asp.net sql-server linq

我对LINQ很新,并且想知道插入[Order]的最佳设计是什么,随后获得[Order]。[ID]并使用它来保存一些[OrderItems]。

[Order]表的ID列是Identity列。

我想尝试阻止调用db.SubmitChanges(),获取新插入的Order ID,然后在插入相关的Order Items时再次调用它(db.SubmitChanges()) - 这是唯一的方法吗这虽然?

提前致谢。

2 个答案:

答案 0 :(得分:4)

如果您正确设置了LINQ to SQL类,那么Order应该有一个OrderItems集合。

您应该能够创建一个Order,然后将新的OrderItems添加到集合中,然后调用db.SubmitChanges()一次,并允许LINQ to SQL处理Id问题。

答案 1 :(得分:0)

您无需在两个单独的步骤中调用它。 LINQ为您解决了这个问题。

如果使用Order和OrderItems表之间的外键关系正确建模数据库,则生成的对象也将具有关系。他们的订单将由OrderItems组成。特别是在一对多关系的情况下,Order对象将具有OrderItems属性,该属性将是OrderItem对象的集合。

LINQ非常聪明,可以看到对象的组成,并且因为它了解表之间的约束类型,如果将使用适当的ID以正确的顺序插入所有记录,则创建相同的实体建模在您的OOP代码中,在关系世界中。

所以,你只需要调用一次SubmitChanges。

db.Orders.InsertOnSubmit(myOrder);
db.SubmitChanges();