2013-04-08 46 views
17

我正在使用EF 4.1 &使用DB第一種方法。我也創建了我的.edmx文件。 現在我想創建我的POCO類。爲什麼要使用DbContext而不是ObjectContext

爲此,我已經安裝了EF 4.x DbContext Generator以及來自NuGet的EF 4.x POCO實體生成器。

我完全知道它推薦使用EF 4.1+的DbContext,因爲它是從ObjectContext派生的。但是,我仍然使用EF 4.x POCO實體生成器&,然後還通過EF 4.x DbContext生成器生成了我的POCO類。

編輯:發現這個ADO.NET DbContext Generator vs. ADO.NET Poco Entity Generator (ObjectContext)

在任一的情況下,它產生.Context.tt & Model.tt文件。那麼由這兩種工具生成的文件有什麼區別?爲什麼推薦使用EF 4.1+的DbContext?

我也想知道ObjectContext的侷限性。

回答

17

的DbContext是使用最普遍的任務時,應當擦亮開發經驗,新的API - 簡單的API被設計得更好,但你還是要得到DbContextObjectContext,如果你想使用一些更復雜的功能使用舊的API。如果您計劃將EF升級到5.x或6.x,那麼使用DbContext可能會更容易一些,因爲這是ADO.NET團隊推薦的。

就發電機EF 4.x而言,POCO發電機創建了更復雜的類,內部使用關係修復。與延遲加載一起使用時,此功能證明自己的效率非常低,所以新的EF DbContext生成器不會使用它。

邊注:從一個API到另一個的代碼轉換爲完全支持:

  • 您可以使用DbContext構造函數接受ObjectContext從ObjectContext的API遷移到的DbContext API
  • 您可以使用IObjectContext適配器移動從DbContext API到ObjectContext API
相關問題