Comment voulez-vous configurer le DbContext lors de la création des Migrations dans le Cadre de l'Entité de Base?

Est-il moyen que l'injection de dépendance peut être configuré/amorcé lors de l'utilisation d'Entity Framework migration des commandes?

Cadre de l'entité de Base prend en charge l'injection de dépendance pour DbContext sous-classes. Ce mécanisme est ainsi que pour la configuration de l'accès aux données en dehors de la DbContext.

Par exemple, ce qui suit configurer EF persister à un serveur SQL server à l'aide d'une chaîne de connexion (extrait de config.json

ServiceCollection services = ...

var configuration = new Configuration().AddJsonFile( "config.json" );
services.AddEntityFramework( configuration )
    .AddSqlServer()
    .AddDbContext<BillingDbContext>( config => config.UseSqlServer() );

Cependant, les migrations commandes ne sais pas pour exécuter ce code afin Add-Migration échouent par manque d'un fournisseur ou de l'absence d'une chaîne de connexion.

Migrations peuvent être mis en oeuvre par des raisons impérieuses OnConfiguring dans le DbContext sous-classe pour spécifier le fournisseur et la configuration de la chaîne, mais qui est dans la manière, lors de la configuration différente est souhaitée ailleurs. En fin de compte garder mon la migration des commandes et mon code à la fois le travail devient fâcheusement complexe.

Note: Mon DbContext vit dans une autre assemblée que le point d'entrée qui l'utilise et ma solution a plusieurs projets start-up.

  • Essayant de se faire est une partie de la question #639. Dans ASP.NET 5, nous allons appeler Startup.ConfigureServices(). À votre avis, serait-il bon d'utiliser la même convention pour non-ASP.NET 5 projets?
  • Maintenant que j'ai fait un peu de développement dans ASP.NET 5 (a l'aide de EF7 traditionnels .NET application) je peux dire que la normalisation de la Startup classe sonne bien pour moi.
  • J'ai poussé pour qu'il en réseau de l'Hébergement/#286, mais il a perdu. La décision a été d'avoir différents DbContext chargeurs pour différents types d'applications. Voir aspnet/EntityFramework#2357.
InformationsquelleAutor vossad01 | 2015-03-17