webentwicklung-frage-antwort-db.com.de

Entity Framework 7 DbContext-Gerüst

Ich versuche, eine DbContext für eine vorhandene Datenbankstruktur mithilfe von ASP.NET 5 und Entity Framework 7 zu generieren. Es ist nicht überraschend, dass nicht viel Dokumentation vorhanden ist, wie dies leicht möglich ist. Darüber hinaus möchte ich NUR den Kontext rüsten; Es gibt ~ 900 Tische und ich interessiere mich nur für ein paar davon, ich brauche keine Modellklasse für jeden.

Ich habe die mit hier und hier angegebenen Befehle mit wenig Glück verwendet.

Ich denke, ich habe zwei Fragen:

  1. Wo befinden sich die generierten Kontextdateien? Ich führe den Befehl in der Eingabeaufforderung ohne Fehler aus, aber sonst passiert nichts. Ich weiß, ich bin zumindest an der richtigen Stelle, da ich das alte EF6-Modell mit nicht unterstützten Eigenschaften hinzufügen kann und es gibt einen Fehler, dass sie nicht unterstützt werden.

  2. Ist es möglich, nur einen Kontext ohne entsprechende Modellklassen zu generieren?

12
awh112

Ich hatte das gleiche Problem mit meinem Projekt, das den Kontext und die Modelle erzeugte. Hier sind ein paar Dinge, die ich getan habe.

Updates für 1.0 RC1 unten

Project.json

  "dependencies": {
    "EntityFramework.MicrosoftSqlServer": "7.0.0-rc1-final",
    "EntityFramework.Commands": "7.0.0-rc1-final",
    "EntityFramework.MicrosoftSqlServer.Design": "7.0.0-rc1-final"
  },

  "commands": {
    "ef": "EntityFramework.Commands"
  },

  "frameworks": {
    "dnx451": { },
    "dnxcore50": { }
  }

DNX-Befehl

dnx ef dbcontext scaffold "connectionString" EntityFramework.MicrosoftSqlServer

Ursprünglicher Beitrag unten

Stellen Sie sicher, dass diese Ihrer project.json-Datei hinzugefügt wurden:

"dependencies": {
    "EntityFramework.SqlServer": "7.0.0-beta7",
    "EntityFramework.Commands": "7.0.0-beta7",
    "EntityFramework.SqlServer.Design": "7.0.0-beta7"
},
"commands": {
    "ef": "EntityFramework.Commands"
}

Aktualisieren Sie dnvm und die dnx-Laufzeiten ebenfalls mit dnvm update-self und dnvm upgrade. Ich habe dies in cmd ausgeführt.

Öffnen Sie cmd.exe im Projektverzeichnis (wenn Sie sich in Windows befinden, navigieren Sie zum Ordner und klicken Sie bei gedrückter Umschalttaste mit der rechten Maustaste in den Ordner und klicken Sie auf "Befehlsfenster hier öffnen"). In meinem Fall hatte ich ein separates Projekt für meine Datenzugriffsschicht, z.

C:\Projects\Stackoverflow Example\src\StackoverflowExample.DAL\

Ich habe dann simplay ran:

dnx ef dbcontext scaffold "Datenquelle = .; Erstkatalog = Datenbank; Integrierte Sicherheit = True" EntityFramework.SqlServer

Stellen Sie sicher, dass Ihr Projekt erstellt werden kann. Wenn Fehler auftreten, funktionieren die Befehle wahrscheinlich nicht.

Es wurden alle Modelle sowie der Kontext (mit dem OnModelCreating () - Setup jeder Entität) generiert. Wenn Sie nicht alle Modelle benötigen, löschen Sie einfach die Modelle, die Sie nicht verwenden.

Um Ihnen Fragen zu beantworten:

  1. Es erstellt die Modelle und den Kontext in dem Ordner, in dem Sie das dnx ef dbcontext-Gerüst ausgeführt haben.
  2. Ich kann keine Befehle sehen, mit denen Sie dies noch tun können. Führen Sie dnx ef --help in cmd aus und sehen Sie selbst. dnx ef

Ich hoffe das hilft.

12
Nick De Beer

Für den Gerüstbefehl existiert eine Option --table (-t):

dnx ef dbcontext scaffold connectionstring provider -t dbo.tab1 -t dbo.tab2
3
Kirsten

Bei EF 7 müssen Sie nicht mehr mit base initialisieren. Dies führt zu einem Compiler-Fehler. was Sie brauchen, um die Microsoft EF7-Startdokumente anzusehen.

Sie möchten auf das Neue achten 

protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
    {
        // Visual Studio 2015 | Use the LocalDb 12 instance created by Visual Studio
        optionsBuilder.UseSqlServer(@"Server=(localdb)\mssqllocaldb;Database=EFGetStarted.ConsoleApp;Trusted_Connection=True;");

        // Visual Studio 2013 | Use the LocalDb 11 instance created by Visual Studio
        // optionsBuilder.UseSqlServer(@"Server=(localdb)\v11.0;Database=EFGetStarted.ConsoleApp;Trusted_Connection=True;");

        // Visual Studio 2012 | Use the SQL Express instance created by Visual Studio
        // optionsBuilder.UseSqlServer(@"Server=.\SQLEXPRESS;Database=EFGetStarted.ConsoleApp;Trusted_Connection=True;");
    }
0
Phillip Morton