使用LINQ,在连续调用多个deleteOnSubmit时调用SubmitChanges:
DataContext.DeleteOnSubmit(itemFromTb1);
DataContext.DeleteOnSubmit(itemFromTb2);
DataContext.SubmitChanges();
它们是否总是按顺序删除( itemFromTb1然后是itemFromTb2 )我是否打电话给他们?
修改 我知道SubmitChanges()按以下顺序执行
但我不确定这些是否按照被调用的顺序执行。
答案 0 :(得分:0)
根据我的经验,它们会按照添加顺序删除。您可以使用上下文Log属性检查生成的SQL代码来验证这一点。
答案 1 :(得分:0)
在这种情况下,似乎没有人知道SubmitChanges()的官方行为。我有很多“我认为他们按照相同的顺序完成”,并没有找到任何文章或官方信息。 似乎很多人没有任何问题所以要么每个人在每个DeleteOnSubmit之后都做一个SubmitChanges(),或者我们可以依赖统计数据:s得出它们按照它们被调用的顺序完成。
答案 2 :(得分:0)
我们有一个错误,该错误表明它们没有按顺序执行。我们的案例如下:
List<TabletFile> ofpList = (from tf in myDB.TabletFiles
where tf.mimetype.Equals("xxx")
select tf).ToList<TabletFile>();
myDB.TabletFiles.InsertOnSubmit(tabletFile);
if (ofpList.Count > 0)
{
myDB.TabletFiles.DeleteOnSubmit(ofpList[0]);
}
myDB.SubmitChanges();
在此代码中,有时会先执行插入操作,有时会删除。
答案 3 :(得分:0)
看起来删除按表名顺序执行。 This page says:
Linq2Sql按表名的字母顺序执行SQL语句
或者如果你相信this page:
实体被标记为删除的顺序无关紧要,LINQ to SQL根据外键的配置在执行Submit Changes调用期间对其进行排序。
如果删除在同一张桌子上,它们显然是按照声明的顺序完成的,但您的里程可能会有所不同。