我打算在下一個項目中使用Entity Framework 4.1,但我很難找到一個好方法來解決它。 總之,我想建立一個多層應用程序,其中的實體將通過Web服務旅行,並儘可能保持乾淨,我想使用POCO而不是自我跟蹤實體。此外,已經存在一個SQL 2008數據庫,將用於將這些實體作爲基礎。將.edmx加載到DbModelBuilder中
從我至今讀(朱莉·勒曼的文章http://msdn.microsoft.com/nl-nl/magazine/hh148150%28en-us%29.aspx,除其他外),似乎是:
- 如果使用數據庫第一種方式,你會得到一個漂亮的.edmx編輯你的模型,但你總是會得到持久感知對象而不是POCO,這在我的情況下是沒有用的。
- 如果使用Code First方法,「ADO.NET DbContext生成器」只能部分幫助您:它確實從.edmx生成實體,但它不會生成獲取外鍵和基數所需的代碼。這意味着代碼不能正常工作( - 編輯,不正確,請參閱我的文章下面),您必須
- a)在您的POCO上使用數據註釋,這是醜陋的imo,因爲它污染了POCO的數據庫信息,並且還創建了對EntityFramework程序集的依賴。
- b)使用傳遞給DbContext.OnModelCreating的DbModelBuilder來設置正確的外鍵,映射等信息(即'流利的'API)。即使API可能'流利',但仍然很難(並且可能無法維護)正確設置所有這些信息,以便它與現有數據庫相匹配(有關這方面的一些示例,請參閱http://sessionfactory.blogspot.com/2011/04/conventions-in-entity-framework-41.html)。
我知道爲什麼「DbModelBuilder路」需要這麼多努力的原因是因爲它的目的是要在其他方式使用:你應該來從實體定義數據庫,不要試圖調整所有實體,以便它們(希望)匹配已經存在的數據庫。然而,在我看來,「DbModelBuilder-way」最終會產生最好的結果:純粹的POCO沒有數據庫元數據。現在
,說了這麼多,我的問題是:
有誰知道的方式到的.edmx裝入DbModelBuilder,使外鍵,列映射等信息好好嘗試一下需要通過流暢的API手動指定?
我認爲這將是兩全其美的,因爲您可以像在Database First場景中那樣直觀地編輯映射,並且仍然獲得乾淨的POCO,因爲所有必需的元數據都存儲在DbModelBuilder中。
感謝您的鏈接,我一定會看看他們。 – Astrotrain