【发布时间】:2016-01-27 21:02:57
【问题描述】:
如标题所述,我需要执行删除 + 插入,我会这样做:
context.DeleteAllOnSubmit ( deleteQuery ) ;
foreach ( var entry in entries )
contex.InsertOnSubmit ( entry ) ;
context.SubmitChanges();
正如在那篇文章中所写: Linq to SQL: execution order when calling SubmitChanges()
我读到删除操作是最后一个应用的,但目前我看到我的逻辑工作(我确信删除+插入每天发生几十次)。 我需要的是了解帖子是否错误或我的逻辑出于某种原因(将 linq 中的检查标志更新为 sql 数据模型?)只是幸运并避免麻烦。
之后我想知道当记录基数发生变化时进行“更新”的更好模式是什么。 我的意思是在我的表中有一个标识实体的主键(一个实体有许多记录)和一个标识同一实体(子实体)中每条记录的子键。 我需要重新生成(因为可能会插入、编辑或删除某些子实体),所以我使用 delete + insert(在我写入 DB 的消息形式中,仅包含存在的实体和子实体,而不是已删除的实体和子实体)。
EG:
ID SubID Data
1 1_0 Father
2 2_0 Father
2 2_1 Child 1
3 3_0 Father
3 3_1 Child 1
3 3_2 Child 2
我无法控制或控制表格(以及其中的数据格式)或消息(我用来写入或删除上面显示的表格)。
【问题讨论】:
-
你说的是交易吗?我发布您使用
TransactionScope引用已接受的答案。 -
你能有一个不是自动生成的唯一键吗?
-
@teovankot 我会避免交易,因为我的是批处理操作(每个更新的巨大序列都用 xml 消息发送给我)所以我想避免打开和关闭很多交易.
-
@AnilKumar:不,我无法控制表格(我无法更改它们的格式),也无法更新、插入或删除我收到的消息
-
亲爱的:如果我链接的问题是正确的并且删除操作是最后一次应用在 SQL Server 上,那么我很感兴趣的一件事是指出。如果答案是肯定的,那么我想知道为什么目前我的程序似乎运行良好
标签: c# sql-server linq