【发布时间】:2018-03-12 13:38:59
【问题描述】:
首先总结一下我们之前所做的以及我们所做的更改:在我们的项目中,我们有多个具有多个 DataContextes 的项目。上周我们将所有这些 DataContext 合并到一个 DataContext 中:这是因为我们现在拥有所有的关系,而不是随机的 DataContext。
进展顺利,直到我们碰壁:我们有一张桌子Entities 和一张桌子Articles。首先我们有以下代码:
var article = new Article();
article.Entity = new Entity();
context.InsertOnSubmit(article);
我们收到了关系 Article <> Entity 的冲突,因此我们尝试了以下操作:
var entity = new Entity();
context.InsertOnSubmit(entity);
var article = new Article();
context.InsertOnSubmit(article);
这也给出了同样的错误。我们启用了context.Log 来检查已执行的查询。每当我们尝试插入实体时,都会执行一个 SELECT 查询。所以我们尝试将 ConflictMode 设置为 FailOnFirstConflict,它没有抛出任何东西,SELECT 仍然被执行。
我们制作了自己的 INSERT,它会在之后附加实体:
var entity = new Entity();
CustomInsert(entity);
context.Attach(entity, false);
var article = new Article();
context.InsertOnSubmit(article);
这不起作用,因为它抱怨触发器。我们禁用了触发器:它起作用了!所以在我们的脑海中,我们认为触发器可能也破坏了 L2S 插入;所以我们还原了所有内容并尝试在没有触发器的情况下使用 LINQ 2 SQL 插入实体:仍然是 SELECT 而不是 INSERT,所以它失败了。
我们也尝试过:
- 删除选项中的
LoadWith。 - 创建 DataContext 的新实例。
现在的问题是:这可能是什么问题?有没有其他人遇到过这个错误,您是否可以修复它?
【问题讨论】:
标签: c# linq-to-sql