web-dev-qa-db-fra.com

Comment implémenter IDbContextFactory pour une utilisation avec les migrations de données Entity Framework

J'essaie d'utiliser les migrations de données Entity Framework, comme décrit dans ce message .

Cependant, lorsque j'essaie d'exécuter le Enable-Migrations étape, je reçois l'erreur suivante dans la console du gestionnaire de packages:

The target context 'MyDataContext' is not constructible. Add a default constructor or provide an implementation of IDbContextFactory

J'ai donc créé une classe d'usine qui implémente IDbContextFactory dans le projet qui contient ma classe DbContext, mais les migrations de données ne semblent pas la reconnaître.

Existe-t-il quelque chose que je devrais faire explicitement pour demander aux migrations de données d'utiliser cette classe d'usine?

43
Tim Coulter

J'ai également rencontré ce problème lorsque j'ai écrit mon contexte pour prendre un nom de chaîne de connexion (puis utilisé ninject pour le fournir).

Le processus que vous avez suivi semble correct, voici un extrait de mon implémentation de classe si cela peut vous être utile:

public class MigrationsContextFactory : IDbContextFactory<MyContext>
{
    public MyContext Create()
    {
        return new MyDBContext("connectionStringName");
    }
}

Cela devrait être tout ce dont vous avez besoin.

59
dougajmcdonald