gpt4 book ai didi

linq-to-sql - linq to sql - 插入 2 个实体父子关系时出错

转载 作者:行者123 更新时间:2023-12-04 03:19:45 24 4
gpt4 key购买 nike

我有订单和订单详细信息实体,其中 OrderID 作为订单详细信息表中的外键。OrderID 是 Order 的标识列,设置为自动生成。

当我按如下方式插入时(为简单起见硬编码值):

LINQ1DataContext db = new LINQ1DataContext();

Order order = new Order();
order.OrdersCustomerID = 1;
order.OrdersDate = time;
db.Orders.InsertOnSubmit(order);

OrdersDetail oDetail = new OrdersDetail();
oDetail.OrdersDetailID = order.OrdersID;
oDetail.OrdersDetailProdID = 1;
oDetail.OrdersDetailQty = 6;
oDetail.OrdersDetailUnitPrice = 2.58m;
db.OrdersDetail.InsertOnSubmit(oDetail);

db.SubmitChanges();

这会导致“与 FOREIGN KEY 约束冲突”错误。我发现这是因为在 InsertOnSubmit(order) 时没有生成 orderID。然后运行 ​​SubmitChanges() 时,OrdersDetailID 与 OrdersID 不匹配并收到错误。 OrderID 只会在“submitchanges()”之后生成。

如果放入额外的 db.SubmitChanges();在 db.Orders.InsertOnSubmit(order) 之后,orderid 按照我的预期自动生成,然后 orderDetails 正常插入。

我的问题是,像这样插入到 2 个表(父子表)时,必须在每次 insertOnSubmit 之后放入 submitChanges 是否正常?

我认为 insertOnSubmit 的想法是我可以在不同的表上执行几个插入,LINQ to SQL 会处理 SubmitChanges 之后的所有细节。

谢谢,

最佳答案

添加

order.OrdersDetail.Add(oDetail);

之前

db.OrdersDetail.InsertOnSubmit(oDetail);  

似乎有效,只需要一个 db.SubmitChanges()。也许这就是做这类事情的方式..

关于linq-to-sql - linq to sql - 插入 2 个实体父子关系时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4356988/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com