2

我已經開始研究一個新項目,並正在從LinqToSQL轉換爲EF 4.1作爲我的ORM。在EF 4.1中首先使用DbContext和數據庫

我已經有了一個數據庫設置,以便與數據庫第一種方法。默認情況下,EF生成一個延伸ObjectContext的上下文。我想知道一個好方法是用DbContext替換它。

大多數可用示例只處理Code First和DbContext,但DBContext也可以與Database First一起使用。使用DBContext有什麼好處嗎?從我讀過的內容來看,DBContext是ObjectContext的簡化版本,使得它更容易使用。還有其他的優點和缺點嗎?

回答

3

你不會手動取代任何東西。您需要在VS Gallery上提供DbContext T4 Generator。不要觸摸自動生成的文件 - 每次修改EDMX文件時,您的更改都會丟失。

去年我回答了similar question。現在我的回答主要是 - 對於新用戶DbContext API可能更好。 DbContext API簡化了 - 無論是在使用和功能方面,但您仍然可以從DbContext獲得ObjectContext,並使用僅在ObjectContext API中可用的功能。另一方面,DbContext API有一些額外的性能影響和額外的錯誤層。在簡單的項目中,您可能在DbContext API中找不到任何缺點 - 您不會看到性能影響,您將不會使用僅在ObjectContext中提供的轉角特性,並且不會受偶爾發生的錯誤影響。

自DbContext API發佈以來,收集了大量的信息和博客文章,因此您不必擔心找不到API的說明。此外,ADO.NET團隊現在使用DbContext API作爲他們的旗艦。

我不是DbContext API的忠實粉絲,但是我的觀點與其功能無關,但與其存在 - 不需要有兩個API並將ADO.NET團隊的開發能力分開來維護和修復兩個API API執行相同的操作。這隻意味着實現新功能的能力較低。

+0

您的鏈接幫助。我也想知道,因爲我已經創建了所有POCO類,只需使用DbContext生成器添加兩個T4模板文件,刪除poco實體的模板文件並使用我的POCO實體,而無需執行太多工作。 – nighthawk457 2012-02-13 18:22:33

+0

您可以但必須嚴格遵守[規則](http://msdn.microsoft.com/zh-cn/library/dd456853.aspx)以創建POCO實體(命名約定) – 2012-02-14 06:44:43

1

我現在正在使用它與Oracle一起添加到現有應用程序中。拉迪斯拉夫提到的簡化對我來說在這個項目上效果很好,因爲我時間和資源都很短。只要你堅持簡單的CRUD操作並少於150個表格,我還沒有發現任何問題。

您仍然可以使用元數據註釋來提供基本驗證和本地化,並且有足夠的文檔,但在官方微軟網站上找不到太多文檔。

相關問題