Entity framework SQL Server首先计算列和EF模型

Entity framework SQL Server首先计算列和EF模型,entity-framework,calculated-columns,ef-model-first,Entity Framework,Calculated Columns,Ef Model First,我正在使用模型优先的方法处理EF5。我设计了模型并执行了生成相应数据库的SQL脚本(使用“从模型生成数据库”) 然后我不得不使用UDF来计算两个列值(这需要删除并重新添加列)。我已经在SSMS中这样做了,然后使用“从数据库更新模型…”来反映模型中的更改 到目前为止,一切都很顺利 但从这一点来看,每当我从模型更新数据库时(如上所述),计算列都会被“标准”列覆盖 例如,以下是EF生成的SQL脚本的摘录: -- Creating table 'ShipmentSet' CREATE TABLE [db

我正在使用模型优先的方法处理EF5。我设计了模型并执行了生成相应数据库的SQL脚本(使用“从模型生成数据库”)

然后我不得不使用UDF来计算两个列值(这需要删除并重新添加列)。我已经在SSMS中这样做了,然后使用“从数据库更新模型…”来反映模型中的更改

到目前为止,一切都很顺利

但从这一点来看,每当我从模型更新数据库时(如上所述),计算列都会被“标准”列覆盖

例如,以下是EF生成的SQL脚本的摘录:

-- Creating table 'ShipmentSet'
CREATE TABLE [dbo].[ShipmentSet] (
[Id] int IDENTITY(1,1) NOT NULL,
[Details] nvarchar(128)  NOT NULL,
[BarcodeValue] nvarchar(32)  NOT NULL,
[ExecutionDate] datetime  NOT NULL,
[RouteId] int  NOT NULL,
[IsLocationBarcodeRequired] bit  NOT NULL,
[IsPending] bit  NULL,
[LastAction] tinyint  NULL
);
GO
最后两列是计算列,它们在模型中的
StoreGeneratedPattern
定义为
computed


有没有办法在模型中添加计算列公式?SQL脚本会删除这些表,然后重新创建它们,所以“忽略”这些列是不行的。

我从Microsoft开发人员中心得到了以下响应(请参阅全文)

基本上,答案是它不是一个bug,它只是不受支持:

不能先混合使用模型和数据库。一旦手动修改数据库,就不能再使用“从EDMX生成数据库”。基于UDF的计算列信息存储在SSDL中,CSDL对此一无所知,因此每次从EDMX文件生成数据库时,特殊列都将作为常规列生成

因此,如果您想使用计算列和UDF,数据库优先是您唯一的选择

我不能说我对这个答案感到满意,因为这意味着EF Model first对于我的大多数项目来说都是无用的,但事情就是这样

欢迎提出任何意见