Ich habe ein Problem, dass, wenn ich versuche, ein Feld in meinem PartsDbContext zuzugreifen bekomme ich folgende Fehlermeldung:Entity Framework Kern Verwendung mehrerer DbContexts
System.Data.SqlClient.SqlException: 'Invalid object name 'fieldName''
Es scheint, dass dies, weil ich versuche, Stellen Sie sicher, dass mein PartsDbContext dieselbe Datenbank verwendet wie mein ApplicationDbContext, der mit Identity verwendet wird. Ich muss wissen, wie man einen 2. dbcontext einrichtet, um mit EF-Kern zu arbeiten, der eine unterschiedliche Datenbank benutzt/schafft.
Ich habe versucht, einen zweiten Verbindungszeichenfolge zu schaffen, aber das wird mir diesen Fehler:
System.Data.SqlClient.SqlException: 'Cannot open database "PartsDb" requested by the login. The login failed. Login failed for user 'DESKTOP-4VPU567\higle'.'
Hier ist mein Code:
appsettings.json
"ConnectionStrings": {
"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<PartsViewModels.Tower> Towers { get; set; }
public DbSet<PartsViewModels.Motherboard> Motherboards { get; set; }
public PartsDbContext(DbContextOptions<PartsDbContext> options)
: base(options)
{
}
}
Startup.cs
public void ConfigureServices(IServiceCollection services)
{
// Add framework services.
services.AddDbContext<ApplicationDbContext>(options =>
options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")));
services.AddIdentity<ApplicationUser, IdentityRole>()
.AddEntityFrameworkStores<ApplicationDbContext>()
.AddDefaultTokenProviders();
services.AddEntityFramework()
.AddDbContext<PartsDbContext>(options =>
options.UseSqlServer(Configuration.GetConnectionString("PartsConnection")));
services.AddMvc();
services.AddAuthorization(options =>
{
options.AddPolicy("RequireAdminRole", policy => policy.RequireRole("Admin"));
});
// Add application services.
services.AddTransient<IEmailSender, AuthMessageSender>();
services.AddTransient<ISmsSender, AuthMessageSender>();
}
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);
}
}
Die Linie var model = _context.Towers.ToList();
ist, wo der Fehler oben zeigt.
Noch einmal. Ich möchte meinen PartsDbContext so einrichten, dass er mit Entity Framework Core so funktioniert, dass EF-Core die Datenbank automatisch erstellt.
Können Sie TY ersetzen ' "PartsConnection":.„Server = (localdb) \\ mssqllocaldb; Database = PartsDb "' mit '" PartsConnection ":" Server = (localdb) \\ mssqllocaldb; Datenbank = PartsDb; Trusted_Connection = True "?? –