Entity Framework Kern, der ein Modell aus einer vorhandenen Datenbank erstellt

9

Wie generieren Sie mit Entity Framework Core das EF-Modell und die Entitäten?

Nach ASP.NET Core - Vorhandene Datenbank Microsoft Artikel müssen Sie einen Befehl wie diesen in der Package Manager Console ausführen:

%Vor%

Damit haben Sie keine Kontrolle darüber, welche Tabellen oder Ansichten importiert werden sollen. Ist es möglich, dass dies die einzige Möglichkeit ist, die Datenbank zurück zu entwickeln und EF-Modelle und -Entitäten jetzt mit EF Core zu erstellen, und wie ist dieser Fortschritt im Vergleich zu der Art und Weise, wie dies seit Jahren mit dem vollständigen Entity Framework gemacht wurde?

    
Dean Kuga 17.01.2017, 19:18
quelle

5 Antworten

3

Dies ist im Entity Framework Core nicht möglich. Lesen Sie die Dokumentation hier: Ссылка

    
Shloimy 17.01.2017, 19:33
quelle
24

Ich weiß, dass diese Frage ein bisschen alt ist, aber ich denke, es ist ziemlich nützlich für Leute, die über dasselbe Problem stolpern.

Wenn ich Ihre Frage richtig verstanden habe, möchten Sie angeben, welche Tabellen generiert werden sollen. Dies sollte möglich sein, wenn Sie dem Befehl den Parameter -Tables hinzufügen.

Hier ist der Befehl, den ich verwendet habe, um 3 Tabellen der Datenbank zu erzeugen (in der Package-Manager Konsole):

%Vor%

Wie Sie sehen, verwende ich die Northwnd-Datenbank und erzeuge nur die Tabellen "Produkte, Kategorien und Lieferanten". Natürlich können Sie weitere Tabellen hinzufügen, Sie müssen sie nur durch Kommas trennen.

Wenn Sie nicht wissen, können Sie den DatabaseName erhalten, indem Sie zu den Datenverbindungen (Server Explorer), klicken Sie auf die Datenbank, die Sie hinzufügen möchten und auf der rechten Seite (Eigenschaften), sehen Sie eine Eigenschaft (Name) . Für mich war es "NORTHWND.MDF".

Ich habe -Force verwendet, um alle bereits erstellten Modelle zu überschreiben.

Ich hoffe, ich könnte helfen.

PS: Ich habe das nur mit ASP.NET Core 2 und Entity Framework Core 2.0.0 versucht.

    
HiHo 13.09.2017 17:35
quelle
3

Meine Situation war, dass ich eine .net 4.5+ Klassenbibliothek mit DbContexts darin hatte.

Diese DbContexte wurden aus einer bestehenden Datenbank mit dem "Code First from existing Database" Wizard erstellt. Dieser Assistent scheint in EF Core zu fehlen.

Um einen neuen Code First DbContext aus einer vorhandenen DB zu erstellen, die mit EF Core kompatibel ist , habe ich dem Leitfaden locker gefolgt hier

Meine Schritte:

  • Eine neue Hauptklassenbibliothek erstellt

  • Das nuget-Paket Microsoft.EntityFrameworkCore

  • wurde hinzugefügt
  • Das nuget-Paket Microsoft.EntityFrameworkCore.Tools wurde hinzugefügt
  • Das nuget-Paket Microsoft.EntityFrameworkCore.SqlServer wurde hinzugefügt
  • Das nuget-Paket Microsoft.EntityFrameworkCore.SqlServer.Design

  • wurde hinzugefügt
  • Die nuget Package Manager-Konsole wurde geöffnet

  • Sie haben den Befehl

    eingegeben %Vor%
  • Als Anbieter eingegeben

    %Vor%

Bitte beachten Sie, dass Sie bei Verwendung eines Nicht-Core-Projekts möglicherweise Probleme mit der nugget Package Manager-Konsole haben. Ich vermied dieses Problem, indem ich einfach eine neue Core Class Library anstelle einer .net-Bibliothek erstellte.

Nachdem Sie den Kontext erstellt haben, können Sie ihn wie gewohnt in Code First bearbeiten, z. Sie können die Tabellen löschen, die Sie nicht verwenden möchten.

    
Yamamoto Hagi 12.05.2017 12:14
quelle
2

Ich habe diesen Fehler bekommen, als ich versuchte zuerst die Datenbank zu benutzen:

  

Der Typ konnte nicht geladen werden   'Microsoft.EntityFrameworkCore.Infrastructure.DesignTimeProviderServicesAttribute'   aus Assembly 'Microsoft.EntityFrameworkCore, Version = 2.0.0.0,   Kultur = neutral, PublicKeyToken = adb9793829ddae60 '

Es gibt 4 hinzugefügte Pakete:

%Vor%

und der Befehl:

%Vor%     
Victor 13.10.2017 04:58
quelle
2

Sie können auch die Methode des Cheaters anwenden: Öffnen Sie VS2015, erstellen Sie eine neue Klassenbibliothek mit demselben Namen wie das aktuelle Projekt und führen Sie dann den Entity Data Model Wizard aus.

Wenn Sie fertig sind, kopieren Sie sie und fügen Sie sie in Ihr .net-Kernprojekt ein. Es gibt ein paar Optimierungen des resultierenden Codes, aber es ist trivial.

Das Ausführen des Scaffold-Befehls wie oben ist jedoch eine bessere Lösung.

    
Greg Gum 26.10.2017 01:22
quelle

Tags und Links