一位朋友报告了计算列、实体框架和 Breeze 的问题
我们有一个表,其中包含由数据库计算的“FullName”列。创建新的
Person时,Breeze 将FullName属性值发送到服务器,即使它根本没有设置,并且在尝试插入新Person实例时会触发错误。数据库抛出此异常:
The column "FullName" cannot be modified because it is either a computed column or is the result of a UNION operator.
下面是 SQL 表定义的相关部分:
创建表 [dbo].[Person](
[ID] [bigint] IDENTITY(1,1) 非空,
[名字] [varchar](100) 空值,
[中间名] [varchar](100) NULL,
[姓氏] [varchar](100) 非空,
[FullName] AS ((([Patient].[LastName]+',') + isnull(' '+[Patient].[FirstName],'')) + isnull(' '+[Patient].[MiddleName] ,'')),
...
我的朋友告诉我相应的“代码优先”类看起来像这样:
公共类人{
公共 int ID {get; 放;}
公共字符串名字 {get; 放;}
公共字符串 MiddleName {get; 放;}
公共字符串姓氏{get; 放;}
公共字符串 FullName {get; 放;}
...
}
这个问题的答案解释了问题并提供了解决方案。