2010-08-27 123 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