我在插入或更新具有计算列的实体时收到以下错误,该计算列根据其他表中的值从标量函数获取值。
SqlException:无法在OUTPUT子句中引用列“inserted.SubjectStatus”,因为列定义包含子查询或引用执行用户或系统数据访问的函数。默认情况下,如果函数不是模式绑定,则假定该函数执行数据访问。请考虑从列定义中删除子查询或函数,或从OUTPUT子句中删除该列。
我的实体(Subject
)的属性SubjectStatus
的属性为DatabaseGenerated(DatabaseGeneratedOption.Computed)
。
另外,我在DbModelBuilder
上有以下代码:
modelBuilder.Entity<Subject>()
.Property(e => e.SubjectStatus)
.HasColumnType("int")
.HasComputedColumnSql("dbo.SubjectStatus(Id)")
.ValueGeneratedOnAddOrUpdate();
我在网上搜索没有帮助我。有没有解决方法?
答案 0 :(得分:0)
我相信,您已在数据库中创建了一个计算列,并为该列分配了一个函数。删除针对列添加的功能,并保留列。
ALTER FUNCTION [dbo].[LMSFN_Course_GetEnrollmentCount] (@CourseID int)
RETURNS INT
从属性中删除ValueGeneratedOnAddOrUpdate
。
也无需添加属性DatabaseGenerated(DatabaseGeneratedOption.Computed).