亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

代碼-優先與模型/數據庫-第一

代碼-優先與模型/數據庫-第一

代碼-優先與模型/數據庫-第一使用實體框架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中的數據庫項目。

我希望在EF 4.1的情況下,還有其他一些與代碼優先和模型/數據庫優先相關的特性。CodeFirst中使用的FLUENT API并不能提供EDMX的所有功能。我期望存儲過程映射、查詢視圖、定義視圖等特性在首先使用模型/數據庫時起作用DbContext(我還沒有試過)但他們沒有在代碼中首先。


查看完整回答
反對 回復 2019-06-14
  • 3 回答
  • 0 關注
  • 732 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號