1

我正在使用模型优先方法使用 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 脚本删除表然后重新创建它们,因此“忽略”这些列是行不通的。

4

1 回答 1

0

我从 Microsoft 的开发人员中心得到以下回复(请参阅此处的完整主题)

基本上答案是它不是一个错误,它根本不受支持:

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

So if you want to use computed columns and UDFs, Database-first is the only choice for you.

I can't say I'm satisfied with the answer, as it means EF Model-first is useless for the most of my projects, but that's just the way things are.

Any comments are welcome.

于 2012-10-26T19:29:55.117 回答