DbContext Not Found oder Ein relationaler Speicher wurde konfiguriert, ohne dass die zu verwendende DbConnection- oder Verbindungszeichenfolge angegeben wurde

asp.net-core asp.net-core-mvc entity-framework-core

Frage

bei Verwendung von Entity Framework-Befehlen ("7.0.0-beta1").

beim Laufen

k ef migration füge InitialCreate hinzu

Ich bekomme Fehler.

[Lösung]

Ich versuche, meine Class-Datei (wo DbContext erstellt wird) aus einer separaten Klassenbibliothek in das Hauptprojekt zu verschieben und alles funktioniert wie erwartet.

Das eigentliche Problem liegt also bei der Verwendung von DbContext in der separaten Klassenbibliothek.

Meine dbcontext-Datei

public class DbTables : DbContext
{

    public DbSet<class_name> class_name_alias { get; set; }

    private static bool _created = false;

    public DbTables()
    {
        if (_created)
        {
            Database.AsRelational().ApplyMigrations();
            _created = true;
        }
    }

    protected override void OnConfiguring(DbContextOptions options)
    {
        options.UseSqlServer(@"Data Source=(LocalDB)\MSSQLLocalDB;Initial Catalog=app_db;Integrated Security=True;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False");
    }

    protected override void OnModelCreating(ModelBuilder builder)
    {
        base.OnModelCreating(builder);
    }

}

Akzeptierte Antwort

Wenn Sie einen DBContext in einer Klassenbibliothek erstellen, müssen Sie zur Erstellung der Migration den Befehl ef in der project.json dieser Klassenbibliothek deklarieren. und führen Sie den k ef-Befehl für dieses Projekt aus.

{
    "version": "1.0.0-*",
    "dependencies": {
        "EntityFramework.SqlServer": "7.0.0-beta1",
        "EntityFramework.Commands": "7.0.0-beta1" 
    },
    "commands": {
        "ef": "EntityFramework.Commands"
    },
    "frameworks" : {
        "aspnet50" : { 
            "dependencies": {
            }
        },
        "aspnetcore50" : { 
            "dependencies": {
                "System.Runtime": "4.0.20-beta-22231"
            }
        }
    }
}

Sie müssen die onConfiguring-Methode überschreiben, um eine Verbindungszeichenfolge einzurichten

protected override void OnConfiguring(DbContextOptions options)
{
    options.UseSqlServer(@"Data Source=(LocalDB)\MSSQLLocalDB;Initial Catalog=app_db;Integrated Security=True;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False");
}


Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow
Ist diese KB legal? Ja, lerne warum
Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow
Ist diese KB legal? Ja, lerne warum