我正在使用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所以我可以播种数据库而不必担心这些值失踪。
答案 0 :(得分:2)
使用Entity Framework迁移,您可以使用GUID column builder及其DefaultValueSql
参数。该参数的值可以是字符串"NEWID()"
。这应该照顾正确的DDL生成。
接下来,您应该使用属性或Fluent模型构建器将这些属性声明为数据库生成,以便EF忽略POCO中设置的值(对于新对象将为null)。