0

我正在使用 EF 5 和 SQL Server 2005,Model First(有点)。

顺便说一下,我的意思是我通常在 SQL Server 设计器中构建我的架构,但将架构导入 EF,这样我就有了一个可视化视图。经常有往返。

但是,我注意到,当我尝试基于 EF 模型生成 DB 模式时,它会跳过我作为默认值分配给我的 Guid ID 的所有 NEWID() 默认值,但它不会跳过身份字段int 类型。

我发现这篇文章解释了这个原因: Entity Framework 4 and Default Values

但是,它没有回答我的问题:如何让 Entity Framework 为我的 uniqueidentifier 类型生成默认值为 NEWID() 的 SQL DDL 数据库模式?

笔记:

我不关心如何从 POCO 实体等中设置它们(有很多帖子对此进行了描述)——我关心的是正确生成 SQL DDL,这样我就可以为数据库播种而不必担心这些值会丢失。

4

1 回答 1

2

使用实体框架迁移,您可以使用GUID 列生成器及其DefaultValueSql参数。该参数的值可以是字符串"NEWID()"。这应该注意正确的 DDL 生成。

接下来,您应该将这些属性声明为使用属性或流式模型构建器生成的数据库,以便 EF 忽略在您的 POCO 中设置的值(对于新对象将为 null)。

于 2013-11-05T18:58:22.297 回答