阻止 EF Core 使用 Merge to Insert

Stop EF Core from using Merge to Insert

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

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

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

The column reference "inserted.MyKeyColumn" is not allowed because it refers to a base table that is not being modified in this statement.

我的猜测是,这是因为查询实际上是 运行 在一个视图上,该视图上有一个插入触发器以更新视图下的实际 table(s) .

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

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

所以更多的研究表明了一种强制使用单插入的方法:

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

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