wake-up-neo.net

Upgrade von Entity Framework 5 auf 6

Nach dem Upgrade unseres Projekts von Entity Framework 5 auf Entity Framework 6 (obwohl NuGets Update-Funktion) erhalte ich den folgenden Fehler in meiner generierten Entities-Klasse:

Fehler 1 Der Typ- oder Namespace-Name "Objekte" ist im Namespace "System.Data" nicht vorhanden.
(Fehlt Ihnen eine Referenz der Versammlung?)

Ich verstehe, dass dies daran liegt, dass sich der Namespace geändert hat und ich den Fehler manuell beheben kann, indem ich meine Importe von: using System.Data.Objects; Und using System.Data.Objects.DataClasses; Nach: using System.Data.Entity.Core.Objects; Ändere.

Da die Datei jedoch generiert wird, muss ich diesen Fix nach jedem Update model from Database Erneut anwenden. Muss noch etwas geändert werden, damit EF das Modell ohne diesen Fehler generiert.

40
RossBille

Ich denke dein Problem ist, dass deine T4 Templates, die die Entitties und den Kontext erzeugen, noch in EF Version 5 sind.

Zuerst müssen Sie die aktuellen Codegenerierungselemente löschen, die sich im Code hinter dem Modell befinden, nämlich <Modelname>.Context.tt Und <Modelname>.tt. Anschließend fügen Sie einen neuen EF-Codegenerator der Version 6 mit Right click in the model designer-> Add Code Generation Item ... -> EF 6.x DbContext Generator.

62
boindiil

Dies ist meine Erfahrung mit dem erfolgreichen Upgrade von Entity Framework v5 auf v6 für:

  • SQL Server.
  • C # und Visual Studio 2012.
  • Datenbank zuerst.

Akronyme:

  • EF5 = Entity Framework v5.
  • EF6 = Entity Framework v6.

Checkliste:

  1. EF5 ist in den Kern von .NET 4.5 integriert, EF6 wurde verschoben und ist Open Source.
    • Dies bedeutet, dass Sie die neuen EF6-Assemblys zu allen relevanten Projekten in der Lösung hinzufügen müssen, insbesondere zum Einstiegsprojekt.
    • Dies bedeutet, dass Sie Assembly System.Entity entfernen aus allen Projekten entfernen müssen, da dies auf EF5 verweist.
  2. EF5 verfügt über eine einzelne DLL "EntityFramework.dll", während EF6 über zwei DLLs verfügt:
    • EntityFramework
    • EntityFramework.SqlServer
  3. EF6 erfordert Änderungen an app.config. Um diese Änderungen vorzunehmen, klicken Sie mit der rechten Maustaste auf die Projektmappe, wählen Sie "NuGet-Pakete für Projektmappe verwalten", suchen Sie nach "EntityFramework" und installieren Sie v6.1.0 von Entity Framework in allen relevanten Projekten, insbesondere dem Einstiegsprojekt. Stellen Sie sicher, dass Sie alle NuGet-Pakete für EF5 Framework aus allen Projekten deinstallieren. Dadurch werden Ihre app.config-Dateien automatisch aktualisiert, sodass sie korrekt sind.
  4. Untersuchen Sie alle app.config-Dateien auf Verweise auf EF5, und entfernen Sie sie.
  5. Die Namespaces haben sich geändert:
    • C # -Linien entfernen using System.Data.EntityClient;, eine EF5-Referenz.
    • C # -Zeile hinzufügen using System.Data.Entity.Core.EntityClient; das ist das richtige für EF6.

Immer noch stecken? Bei dieser Checkliste handelt es sich um ein Community-Wiki. Sie können diese Checkliste auch bearbeiten, um anderen unglücklichen Seelen zu helfen, die immer noch mit dem Kopf gegen die Wand schlagen, die eine EF6-Konfiguration haben kann.

Update 15.02.2016

Bitte prüfen Sie andere Optionen, bevor Sie EF in Betracht ziehen. Es ist 100-mal langsamer als andere Optionen, es ist viel zu kompliziert für das, was es liefert, die Benutzeroberfläche der Entität ist voller Fehler und weist merkwürdige Usability-Probleme auf. Wir werden unseren gesamten EF6-Code herausreißen und durch etwas ersetzen müssen, das es braucht In weniger als 5 Minuten können Sie in Dapper eine Abfrage ausführen, die 5 Sekunden dauert.

37
Contango