Entity Framework Core utilisant plusieurs DbContexts

J’ai un problème lorsque j’essaie d’accéder à un champ de mon PartsDbContext et d’obtenir l’erreur suivante:

System.Data.SqlClient.SqlException: ‘Nom d’object non valide’ NomChamp ”

Il semble que ce soit parce que j’essaie de faire en sorte que mon PartsDbContext utilise la même firebase database que mon ApplicationDbContext qui est utilisé avec Identity. J’ai besoin de savoir comment configurer un deuxième dbcontext pour fonctionner avec le kernel EF qui utilise / crée une firebase database différente.

J’ai essayé de créer une deuxième chaîne de connexion, mais cela me donne l’erreur suivante:

System.Data.SqlClient.SqlException: ‘Impossible d’ouvrir la firebase database “PartsDb” demandée par le login. La connexion a échoué. Échec de la connexion pour l’utilisateur ‘DESKTOP-4VPU567 \ higle’. ‘

Voici mon code:

appsettings.json

"ConnectionSsortingngs": { "DefaultConnection": "Server=(localdb)\\mssqllocaldb;Database=aspnet-PrecisionCustomPC-b14db89e-86ad-4855-a17f-ac64a04339aa;Trusted_Connection=True;MultipleActiveResultSets=true", "PartsConnection": "Server=(localdb)\\mssqllocaldb;Database=PartsDb" }, "Logging": { "IncludeScopes": false, "LogLevel": { "Default": "Warning" } } 

PartsDbContext.cs

 public class PartsDbContext : DbContext { public DbSet Towers { get; set; } public DbSet Motherboards { get; set; } public PartsDbContext(DbContextOptions options) : base(options) { } } 

Startup.cs

 public void ConfigureServices(IServiceCollection services) { // Add framework services. services.AddDbContext(options => options.UseSqlServer(Configuration.GetConnectionSsortingng("DefaultConnection"))); services.AddIdentity() .AddEntityFrameworkStores() .AddDefaultTokenProviders(); services.AddEntityFramework() .AddDbContext(options => options.UseSqlServer(Configuration.GetConnectionSsortingng("PartsConnection"))); services.AddMvc(); services.AddAuthorization(options => { options.AddPolicy("RequireAdminRole", policy => policy.RequireRole("Admin")); }); // Add application services. services.AddTransient(); services.AddTransient(); } 

AdminController.cs

 [Authorize(Policy = "RequireAdminRole")] public class AdminController : Controller { private readonly PartsDbContext _context; public AdminController(PartsDbContext context) { _context = context; } public IActionResult Index() { return View(); } public IActionResult Towers() { var model = _context.Towers.ToList(); return View(model); } } 

La ligne var model = _context.Towers.ToList(); est l’endroit où l’erreur apparaît.

Encore une fois. Je souhaite configurer mon PartsDbContext pour qu’il fonctionne avec Entity Framework Core de manière à ce que EF-Core crée automatiquement la firebase database.

    Je l’ai compris. Cela est principalement dû au fait que j’ai accidentellement supprimé la firebase database utilisée par Identity et que je devais trouver le moyen de la récupérer.

    Apparemment, ma chaîne de connexion n’a rien d’inconvénient. Je devais simplement aller dans le gestionnaire de paquets et taper ces commandes dans cet ordre:

    1. Add-Migration init -Context PartsDbContext
    2. Update-Database -Context PartsDbContext

    J’ai découvert cela parce que c’est ce que je devais faire pour que mon ApplicationDbContext fonctionne à nouveau et il s’avère que cette étape est effectuée pour vous lorsque vous créez une nouvelle application Web MVC Core dans Visual Studio à l’aide de l’authentification d’utilisateur individuel.

    Donc, en gros, la procédure à suivre pour append plus de DbContexts consiste à:

    1. Créer une classe DbContext
    2. Créez une chaîne de connexion pour ce DbContext dans appsettings.json
    3. Ajoutez le DbContext à vos services configurés dans Startup.cs
    4. Configurez le DbContext dans les contrôleurs qui l’utiliseront.
    5. Ouvrez le gestionnaire de paquets et exécutez les 2 lignes ci-dessus. (si “-Context” ne fonctionne pas, essayez “–context”
    6. Exécutez votre programme et laissez EntityFrameworkCore s’occuper du rest.