实体框架中的 OUTPUT 子句问题

问题描述 投票:0回答:1

我正在尝试使用实体框架更新 SQL Server 分区视图中的一些数据。

我设法映射视图(

toTable
),我可以查询选择和插入,但无法进行更新。我认为原因是实体框架生成的 SQL UPDATE 包含
OUTPUT 1
子句,但分区视图不支持它 - SQL Server 抛出错误:

无法指定 OUTPUT 子句,因为目标视图“MyView”是分区视图。

有什么解决办法吗?

我尝试了触发器的技巧:

modelBuilder.Entity<MyView>()
        .ToTable(tb => tb.HasTrigger("SomeTrigger"));

但后来我遇到了例外:

预计更新 1 行,但已更新 0 行

c# .net sql-server entity-framework entity-framework-core
1个回答
0
投票

有什么解决办法吗?

您可以使用 INSTEAD OF 触发器,而不是让 SQL Server 计算分区视图的插入。

对于 INSTEAD OF 触发器,返回的结果就像 INSERT、UPDATE 或 DELETE 确实发生过,即使没有发生 触发操作会导致修改发生。

输出-TSQL

© www.soinside.com 2019 - 2024. All rights reserved.