2010-08-27 109 views
9

我可能会错过一些东西,但由Entity Framework 4生成的SQL Server 2008 R2数据库缺少通过EF设计器配置的默认值。实体框架4和默认值

任何想法我可能做错了什么?

回答

12

原因是因为您可以在概念模型和数据库默认值中设置的默认值是完全不相关
让我们考虑一个典型的情况,即您已经有一个数据库在列上设置了默认值,同样的道理,默认值不会在商店模式或实体本身中获得。


因此,如果您为将用于生成数据库模式的模型中的实体属性定义默认值,请务必注意,您为实体的属性定义的默认值都不会得到推送到数据库。

但值得一提的是,默认的EntityObject T4代码生成模板和默认的POCO实体模板都将在生成的类中设置该属性的默认值。

您可以通过仔细查看yourModelName.edmx.sql一旦您点击“从模型生成数据库...”生成的文件来验证此问题。正如你所看到的,有没有这样的这样的事情在里面:
ADD约束DEFAULT“默认值” FOR YourColumnName

+0

谢谢你的回答言简意赅。非常有意义。 – Shaun 2010-08-27 19:17:07

+0

虽然使代码迁移变得更困难,但确实有意义。将一个不可为空的字段添加到现有表中,生成的迁移脚本无法在SQL Studio中比较两个模式。必须再次手动完成。 – simbolo 2013-05-23 16:52:49