实体框架使用默认表值生成数据库模式(SQL)

时间:2013-02-27 20:34:20

标签: entity-framework sql-server-2005 entity-framework-5 ef-model-first

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

通过某种方式,我的意思是我通常在SQL Server设计器中构建我的架构,但是将架构导入EF,因此我有一个可视化视图。经常有往返。

但是,我注意到当我尝试基于EF模型生成数据库模式时,它会跳过我已分配为我的Guid ID的默认值的所有NEWID()默认值,但它不会跳过int类型的标识字段。

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

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

注:

我不关心如何从POCO实体中设置它们等等(有很多帖子描述了这一点) - 我担心的是正确生成SQL DDL所以我可以播种数据库而不必担心这些值失踪。

1 个答案:

答案 0 :(得分:2)

使用Entity Framework迁移,您可以使用GUID column builder及其DefaultValueSql参数。该参数的值可以是字符串"NEWID()"。这应该照顾正确的DDL生成。

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