代碼-優先與模型/數據庫-第一使用實體框架4.1代碼-先通過模型/數據庫-先使用EDMX圖的利弊是什么?我試圖完全理解使用EF4.1構建數據訪問層的所有方法。我在使用儲存庫模式IoC.我知道我可以使用代碼優先的方法:手動定義我的實體和上下文,然后使用ModelBuilder微調架構。我還可以創建一個EDMX圖,并選擇使用T4模板生成相同代碼的代碼生成步驟。POCO上課。在這兩種情況下,我最終POCO對象是ORM產生的不可知論者和上下文DbContext.數據庫首先似乎是最有吸引力的,因為我可以在企業管理器中設計數據庫,快速同步模型并使用設計器對其進行微調。那這兩種方法有什么區別呢?這僅僅是VS 2010對企業經理的偏好嗎?
3 回答

海綿寶寶撒
TA貢獻1809條經驗 獲得超8個贊
代碼優先
非常受歡迎,因為硬核程序員不喜歡任何類型的設計人員,在EDMXXML中定義映射太復雜了。 完全控制代碼(沒有自動生成的代碼,很難修改)。 一般的期望是,您不必費心使用DB。DB只是一個沒有邏輯的存儲。EF將處理創建,您不想知道它是如何完成工作的。 對數據庫的手動更改很可能會丟失,因為您的代碼定義了數據庫。
數據庫優先
如果您有由DBA設計的DB,或者是單獨開發的,或者您有現有的DB,則非常受歡迎。 您將讓EF為您創建實體,在修改映射之后,您將生成Poco實體。 如果您想要Poco實體中的其他特性,則必須使用T4、修改模板或使用部分類。 手動更改數據庫是可能的,因為數據庫定義了域模型。您可以隨時從數據庫中更新模型(此功能運行得很好)。 我經常使用這與數據庫項目(只有高級和最終版本)。
模型優先
如果你是設計師迷,IMHO很受歡迎(你不喜歡寫代碼或SQL)。 您將“繪制”您的模型,讓工作流生成您的數據庫腳本,讓T4模板生成您的Poco實體。您將失去對實體和數據庫的部分控制,但對于小型輕松項目,您將非常有效率。 如果您想要Poco實體中的其他特性,則必須使用T4、修改模板或使用部分類。 對數據庫的手動更改很可能會丟失,因為您的模型定義了數據庫。如果您安裝了數據庫生成電源包,這將更好地工作。它將允許您更新數據庫架構(而不是重新創建)或更新VS中的數據庫項目。
DbContext
添加回答
舉報
0/150
提交
取消