Linq to Sql添加子记录

时间:2009-08-18 15:57:11

标签: .net linq linq-to-sql

我在Linq到Sql设置中有两个实体作为父/子关系(父可以有很多子项)。我有一个现有的父记录,并尝试创建新的子记录以“添加”到父级。让我们使用熟悉的Order和OrderDetails模型进行解释。

我正在尝试将一些东西添加到父记录中,但是当我在数据上下文中调用SubmitChanges()时,我新创建的数据不会“插入”数据库。

例如,我尝试过:

MyDataContext context = new MyDataContext();
Order existingOrder = context.Orders.SingleOrDefault(o => p.OrderID == orderID);
OrderDetail newDetail = new OrderDetail();
//fill in order details here...

//ESTABLISH THE LINK SUCH THAT NEW RECORD IS CREATED
existingOrder.OrderDetails.Add(newDetail);

context.SubmitChanges();

我也试过了:

MyDataContext context = new MyDataContext();
Order existingOrder = context.Orders.SingleOrDefault(o => p.OrderID == orderID);
OrderDetail newDetail = new OrderDetail();
//fill in order details here...

//ESTABLISH THE LINK SUCH THAT NEW RECORD IS CREATED
newDetail.OrderID = existingOrder.OrderID;
newDetail.Order = existingOrder;

context.SubmitChanges();

两者的结合:

MyDataContext context = new MyDataContext();
Order existingOrder = context.Orders.SingleOrDefault(o => p.OrderID == orderID);
OrderDetail newDetail = new OrderDetail();
//fill in order details here...

//ESTABLISH THE LINK SUCH THAT NEW RECORD IS CREATED
newDetail.OrderID = existingOrder.OrderID;
newDetail.Order = existingOrder;
existingOrder.OrderDetails.Add(newDetail);

context.SubmitChanges();

奇怪的是,处理事物的这两种方式似乎都在代码库的其他地方工作。例如:

MyEntity myEntity = context.MyEntities.SingleOrDefault(e => e.MyEntityID = id);
myEntity.SelectedCategories.Add( 
    new SelectedCategory { MyEntityID = myEntity.MyEntityID , CategoryID = categoryId } 
);
context.SubmitChanges(); //correctly adds the new "many-to-many" record

我正在尝试做什么的“正确”方式是什么?我是否需要为我正在创建的每个新项目显式调用InsertOnSubmit()?现在有办法告诉模型,添加到子集合中的任何内容都应该在提交时添加吗?

谢谢!

0 个答案:

没有答案