我的應用程序在EF 4中首先使用數據庫EDMX。我想將所有內容升級到EF 6.使用NuGet獲取EF 6後,我必須對使用我的EF模型的類進行大量更改,因為命名空間已經過在EF 6中改變了。然後我意識到,我的EDMX生成的代碼也使用了錯誤的命名空間等。到目前為止我沒有使用自定義T4。

如何將現有的EDMX升級到EF 6。

謝謝。

一般承認的答案

  1. 您刪除舊的.tt文件
  2. 您可以在設計器模式下打開edmx文件(這樣您就可以看到您的模型)
  3. 右鍵單擊一個空閒空間
  4. 選擇添加代碼生成項
  5. 在對話框中選擇“EF 6.x DbContext代碼生成項”(類似這樣)
  6. 保存您的edmx,將為您生成所有類,使用新的命名空間等

熱門答案

除了Rand Random和Dean Oliver在這裡給出的答案之外,讓我提一下以下MSDN鏈接 ,描述升級到EF6的一般步驟不要低估所需的手動步驟......

路線圖是(見上面給出的鏈接中的詳細信息):

  1. 準備工作: 為Visual Studio 2012/13安裝Entity Framework 6工具

  2. 安裝EF6 NuGet包

  3. 確保刪除對System.Data.Entity.dll的程序集引用 (注意:安裝EF6 NuGet包應該自動從您的項目中刪除對System.Data.Entity的任何引用)。

  4. 交換任何EF Designer(EDMX)模型以使用EF 6.x代碼生成

    筆記:

    • 如果您之後收到消息“實體數據模型設計器無法顯示您請求的文件”,則單擊顯示的文本消息中的鏈接修改 “實體數據模型設計器...您可以修改 ... “,將顯示表格。使用Ctrl + A選擇全部,然後按Del ,然後右鍵單擊並選擇“從數據庫更新模型”,最後使用Ctrl + S保存。這將使用默認的T4模板“EF 6.x DbContext Generator”將模型更新到最新版本。

    • 如果您在項目中使用了ObjectContext ,則應考慮下載模板“EF 6.x EntityObject Generator” 。然後在模型設計器中右鍵單擊,選擇“添加代碼生成項”,然後選擇尚未使用的名稱。它將生成正確的類,之後您必須刪除所有舊的(“ *.tt ”)文件和相關的生成的類(“ *.cs ”)文件。

  5. 更新正在使用的任何核心EF類型的 名稱空間 ,即

    • System.Data.*任何類型都移動到System.Data.Entity.Core.*
    • System.Data.EntityState => System.Data.Entity.EntityState
    • System.Data.Objects.DataClasses.EdmFunctionAttribute => System.Data.Entity.DbFunctionAttribute
      注意:此類已重命名;具有舊名稱的類仍然存在且有效,但現在已標記為已過時。
    • System.Data.Objects.EntityFunctions => System.Data.Entity.DbFunctions
      注意:此類已重命名;具有舊名稱的類仍然存在且有效,但現在已標記為已過時。
    • 空間類(例如DbGeographyDbGeometry )已經從
      System.Data.Spatial => System.Data.Entity.Spatial

注意:




許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因
許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因