我正在尝试使用实体框架更新 SQL Server 分区视图中的一些数据。
我设法映射视图(
toTable
),我可以查询选择和插入,但无法进行更新。我认为原因是实体框架生成的 SQL UPDATE 包含 OUTPUT 1
子句,但分区视图不支持它 - SQL Server 抛出错误:
无法指定 OUTPUT 子句,因为目标视图“MyView”是分区视图。
有什么解决办法吗?
我尝试了触发器的技巧:
modelBuilder.Entity<MyView>()
.ToTable(tb => tb.HasTrigger("SomeTrigger"));
但后来我遇到了例外:
预计更新 1 行,但已更新 0 行
有什么解决办法吗?
您可以使用 INSTEAD OF 触发器,而不是让 SQL Server 计算分区视图的插入。
对于 INSTEAD OF 触发器,返回的结果就像 INSERT、UPDATE 或 DELETE 确实发生过,即使没有发生 触发操作会导致修改发生。