通过System.Data.Linq.DataContext插入SQL Server时出错

时间:2011-12-19 16:56:25

标签: c# .net sql-server linq-to-sql datacontext

我在事务中通过DataContext进行了大量的插入操作。 我插入两种类型的对象:A和B.

我执行了许多sql插件,如:

INSERT INTO A (...) VALUES ('11111111-1111-1111-1111-111111111111',..)
INSERT INTO B (...) VALUES (
   '21111111-1111-1111-1111-111111111111', 
   '11111111-1111-1111-1111-111111111111',...) 

分别在

db.ExecuteCommand(sql.ToString(), processedParams.ToArray());

表B具有A的外键。

有时我会收到如下错误: 违反表“A”上的FOREIGN KEY约束“FK_B_A”。列“GUID”。

有时所有记录都成功插入到DB中。除动态生成的GUID外,数据总是相同的。

看起来插入到B中有时会在插入A之前出现。

2 个答案:

答案 0 :(得分:4)

订单可能会以某种方式交换。

我建议您先在inserts内完成所有table A,然后再inserts table B {。}}。


此外,您发布的插入内容似乎不正确。

有关示例,请参阅here

答案 1 :(得分:1)

谢谢大家的帮助。

在我的服务中,错误是交易清理过程中的副作用。它会回滚任何很长很长的事务。在插入表A和表B之间进行清理时会抛出错误,因为A中的记录不再存在。