Ana*_* Mp 4 c# sql-server entity-framework sql-server-2012
在插入或更新具有计算列的实体时出现以下错误,该计算列根据其他表的值从标量函数获取值。
SqlException:无法在 OUTPUT 子句中引用列“inserted.SubjectStatus”,因为列定义包含子查询或引用执行用户或系统数据访问的函数。如果函数未受架构绑定,则默认假定该函数执行数据访问。考虑从列定义中删除子查询或函数,或者从 OUTPUT 子句中删除列。
我的 Entity ( Subject) 具有SubjectStatusattribute属性DatabaseGenerated(DatabaseGeneratedOption.Computed)。
另外,我有以下代码DbModelBuilder:
modelBuilder.Entity<Subject>()
.Property(e => e.SubjectStatus)
.HasColumnType("int")
.HasComputedColumnSql("dbo.SubjectStatus(Id)")
.ValueGeneratedOnAddOrUpdate();
Run Code Online (Sandbox Code Playgroud)
我在网上的搜索没有帮助我。有什么解决方法吗?
从 .net 6 更新到 .net 7 后,我遇到了同样的问题。根据 Microsoft 官方文档,它来自一个重大更改:
对我来说,以下更改有效:
protected override void OnModelCreating(ModelBuilder builder)
{
builder.Entity<Subject>()
.Property(e => e.SubjectStatus)
.HasComputedColumnSql("dbo.SubjectStatus(Id)");
builder.Entity<Subject>()
.ToTable(tbl => tbl.HasTrigger("dbo.SubjectStatus(Id)"));
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
943 次 |
| 最近记录: |