【问题标题】:Stop EF Core from using Merge to Insert阻止 EF Core 使用合并插入
【发布时间】:2020-03-29 16:11:55
【问题描述】:

我正在将我的应用程序转换为 .NET Core。这样做时,我遇到了 EF Core 和插入问题。

如果我插入 1 或 2 行,则 EF Core 将执行正常的 SQL INSERT 语句。

但是当我有 3 行或更多行时,它会切换到 MERGE 语句,然后失败:

不允许列引用“inserted.MyKeyColumn”,因为它引用了未在此语句中修改的基表。

我的猜测是,这是因为查询实际上是在一个视图上运行的,该视图上有一个插入触发器来更新视图下的实际表。

就像我说的,当它使用插入语句时,它工作得很好。但是当它尝试使用合并插入时会失败。

有没有办法阻止 EF Core 使用 MERGE 进行插入?

【问题讨论】:

    标签: .net-core entity-framework-core ef-core-2.2


    【解决方案1】:

    因此,更多研究显示了一种强制使用单个插入的方法:

     optionsBuilder.UseSqlServer(connectionString, options =>
            {
                options.MaxBatchSize(1);
            });
    

    警告:这将导致所有插入都是单独的插入语句。对于大容量插入,性能不是很好。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-10-28
      • 2018-04-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多