我在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()?现在有办法告诉模型,添加到子集合中的任何内容都应该在提交时添加吗?
谢谢!