DbContext non trouvé ou Un magasin relationnel a été configuré sans spécifier ni la chaîne de connexion ni la chaîne de connexion à utiliser.

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

Question

lors de l’utilisation des commandes Entity Framework ("7.0.0-beta1").

en cours d'exécution

Migration de migration add InitialCreate

Je reçois des erreurs.

[Solution]

J'essaie de déplacer mon fichier de classe (où DbContext est créé) vers le projet principal depuis une bibliothèque de classes séparée et que tout fonctionne comme prévu

le vrai problème réside donc dans l'utilisation de DbContext dans une bibliothèque de classes séparée.

mon fichier dbcontext

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);
    }

}

Réponse acceptée

Si vous créez un DBContext dans une bibliothèque de classes, pour créer une migration, vous devez déclarer la commande ef dans le fichier project.json de cette bibliothèque de classes. et lancez la commande pour ce projet.

{
    "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"
            }
        }
    }
}

Vous devez remplacer la méthode onConfiguring pour configurer une chaîne de connexion.

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");
}



Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi