LINQ:SubmitChanges上的几个DeleteOnSubmit顺序行为

时间:2010-01-29 14:58:49

标签: c# linq

使用LINQ,在连续调用多个deleteOnSubmit时调用SubmitChanges:

DataContext.DeleteOnSubmit(itemFromTb1);
DataContext.DeleteOnSubmit(itemFromTb2);

DataContext.SubmitChanges();

它们是否总是按顺序删除( itemFromTb1然后是itemFromTb2 )我是否打电话给他们?

修改 我知道SubmitChanges()按以下顺序执行

  1. 插入
  2. 更新
  3. 删除
  4. 但我不确定这些是否按照被调用的顺序执行。

4 个答案:

答案 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调用期间对其进行排序。

如果删除在同一张桌子上,它们显然是按照声明的顺序完成的,但您的里程可能会有所不同。