阻止 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);
});
警告:这将导致所有插入都是单独的插入语句。对于大容量插入不是很好。
我正在将我的应用程序转换为 .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);
});
警告:这将导致所有插入都是单独的插入语句。对于大容量插入不是很好。