2012-04-01 93 views
0

我想弄清楚什麼是最好的方式去實體框架代碼生成與「數據庫第一」的方法。我希望模型的完整主要描述是實際的數據庫模式,註釋存儲在數據庫中的表或擴展屬性中。對模型第一或代碼優先方法不感興趣。不反對編寫自定義代碼來實現它是否會產生最高質量的解決方案。這裏有一些想法:實體框架代碼生成

(1)從數據庫生成EDMX。使用自定義代碼向EDMX添加關於唯一性和其他當前未內置到EF中的約束的註釋。使用T4模板從EDMX生成代碼。 (2)編寫一個自定義工具,從數據庫中生成「代碼優先」類。解決方案中沒有EDMX文件。

(3)還有其他的東西嗎?

似乎#1需要更深入的EF知識和更多的實際工作,而不是#2,我現在反對,如果有顯着的好處。

有什麼建議嗎?

+0

你知道你可以做「代碼優先」,而不是生成架構,不是嗎?您所要做的就是創建類以匹配數據庫模式,但您必須在兩個地方進行任何更改。 – tvanfosson 2012-04-01 13:58:57

+0

@Ivan,關於「您所要做的就是創建類以匹配數據庫模式」,問題是直接生成此代碼還是將EDMX文件放在中間。 – 2012-04-01 14:09:25

+0

我喜歡代碼首先給出的類控件的控件,並且首先發現代碼比設計器自動生成的代碼更容易測試。事實上,在代碼首次發貨之前,我不會使用EF;使用設計器的Linq2SQL更好。現在,我首先使用EF代碼作爲MSSQL的第一選擇。不幸的是,我沒有發現任何這些方法足以在IDE(設計器或代碼)中設計整個模式,並且通常使用DB-first和代碼優先模型。 – tvanfosson 2012-04-01 14:18:32

回答

0

好吧,沒有什麼比將表從服務器資源管理器拖到edmx設計器表面更簡單了。我就是這麼做的。我沒有對模型進行任何自定義,所以我可以刪除它的一部分重新生成。

0

您可以使用EF從數據庫導入模型。右鍵單擊EF設計器並選擇「從數據庫更新模型」選項。

如果你想多一點,你可以嘗試http://radarc.net。它是創建腳手架和CRUD的代碼生成工具。它首先使用T4模板和代碼,以便您可以自定義其生成代碼的方式。