一位朋友报告了计算列、实体框架和 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; 放;} ... }
这个问题的答案解释了问题并提供了解决方案。