EF7 rc1:插入或更新具有计算列

时间:2016-05-06 11:29:45

标签: c# sql-server entity-framework sql-server-2012

我在插入或更新具有计算列的实体时收到以下错误,该计算列根据其他表中的值从标量函数获取值。

  

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();

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

1 个答案:

答案 0 :(得分:0)

我相信,您已在数据库中创建了一个计算列,并为该列分配了一个函数。删除针对列添加的功能,并保留列。

ALTER FUNCTION [dbo].[LMSFN_Course_GetEnrollmentCount] (@CourseID int)
RETURNS INT

从属性中删除ValueGeneratedOnAddOrUpdate

也无需添加属性DatabaseGenerated(DatabaseGeneratedOption.Computed).