Man*_*ish 10 c# entity-framework-core asp.net-core .net-6.0
在.NET 5 Web应用程序中,我们在startup.cs中使用如下代码来使用实体框架初始化数据库:
using (var serviceScope = app.ApplicationServices.GetService<IServiceScopeFactory>().CreateScope())
{
var context = serviceScope.ServiceProvider.GetRequiredService<ApplicationDbContext>();
context.Database.EnsureCreated();
}
Run Code Online (Sandbox Code Playgroud)
但在 .NET 6 中,我收到没有 ApplicationServices 的错误。我尝试了此处提出的解决方案,但随后出现运行时错误:“无法从根提供程序解析作用域服务‘WebApplication1.DataAccess.SchoolDbContext’”。我的program.cs中的完整代码如下:
using WebApplication1.DataAccess;
using Microsoft.EntityFrameworkCore;
WebApplicationBuilder builder = WebApplication.CreateBuilder(args);
builder.Configuration.AddJsonFile("appsettings.json");
builder.Services.AddRazorPages();
// Setup EF connection
// /sf/answers/3016870671/
// https://medium.com/executeautomation/asp-net-core-6-0-minimal-api-with-entity-framework-core-69d0c13ba9ab
builder.Services.AddDbContext<SchoolDbContext>(options =>
options.UseSqlServer(builder.Configuration["Data:SchoolLocal:ConnectionString"]));
WebApplication app = builder.Build();
// /sf/answers/4988082851/
SchoolDbContext dbcontext = app.Services.GetRequiredService<SchoolDbContext>();
dbcontext.Database.EnsureCreated();
...
Run Code Online (Sandbox Code Playgroud)
帮助会很棒。
Gur*_*ron 21
WebApplicationbuilder.Build()由has属性返回 Services,该属性允许创建范围:
using(var scope = app.Services.CreateScope())
{
var dbContext = scope.ServiceProvider.GetRequiredService<SchoolDbContext>();
// use context
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6097 次 |
| 最近记录: |