EF7 rc1:插入或更新具有计算列的实体时出错

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)

我在网上的搜索没有帮助我。有什么解决方法吗?

Imr*_*deh 5

从 .net 6 更新到 .net 7 后,我遇到了同样的问题。根据 Microsoft 官方文档,它来自一个重大更改:

ef core 7.0 重大变更

对我来说,以下更改有效:

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)