【问题标题】:Index of Linq ErrorLinq 错误索引
【发布时间】:2010-09-16 13:22:43
【问题描述】:

如果我有以下 Linq 代码:

context.Table1s.InsertOnSubmit(t);
context.Table1s.InsertOnSubmit(t2);
context.Table1s.InsertOnSubmit(t3);

context.SubmitChanges();

由于第二次插入,我得到一个数据库错误,Linq 抛出一个异常,指出有错误。但是,有没有办法找出问题是第 2 个插入而不是第 1 个或第 3 个插入?

为了澄清,我预计第二次失败是出于商业原因(我正在使用存储过程进行插入,并且还在进行一些验证并在失败时引发错误)。我希望能够告诉用户哪一个失败了以及为什么。我知道在 C# 代码中而不是在数据库中进行此验证会更好,但目前这不是一个选项。

【问题讨论】:

  • 什么样的错误?什么样的例外?你怎么知道是第二项?

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


【解决方案1】:

您可以明确指定一个像这样的冲突模式:

context.SubmitChanges(ConflictMode.ContinueOnConflict);

如果您想插入有效的内容并且不会在第一次冲突时失败,请使用

context.ChangeConflicts

收集以找出在插入过程中发生冲突的对象。

【讨论】:

    【解决方案2】:

    注释掉第一个和第三个插入以将它们排除为嫌疑人。

    我的第一个想法是第二个插入与第一个具有相同的 ID,但是如果没有有关错误的更多详细信息,很难诊断您的问题。

    【讨论】:

    • 见上面我的 cmets。我基于某些条件逻辑导致插入在 SP 中失败。我只想知道哪个失败了。
    猜你喜欢
    • 1970-01-01
    • 2015-07-19
    • 2011-05-13
    • 2018-04-18
    • 2020-03-02
    • 2018-03-20
    • 2013-01-01
    • 2010-10-01
    • 2015-07-01
    相关资源
    最近更新 更多