我正在使用Ef Core 3.1,并且具有以下简单的DBContext。 这是我的创业公司: Program.cs: 启动我的网站时,仅使用dbo .__ EFMigrationsHistory表即可成功创建数据库。 当我尝试使用以下方式添加迁移时: 我收到以下错误消息: Microsoft.EntityFrameworkCore.Design.OperationException:无法执行
创建一个类型为“ UserDbContext”的对象。对于不同的模式
在设计时受支持,请参阅
https://go.microsoft.com/fwlink/?linkid=851728 --->
System.MissingMethodException:未定义无参数构造函数
用于类型'UserDbContext'。 在我的上下文结果中添加无参数构造函数: 尚未为此DbContext配置数据库提供程序。一种
可以通过重写DbContext.OnConfiguring来配置提供程序
方法或通过在应用程序服务提供程序上使用AddDbContext。
如果使用AddDbContext,则还要确保您的DbContext类型
在其构造函数中接受DbContextOptions对象,并
将其传递给DbContext的基本构造函数。 我不确定为什么 答案 0 :(得分:1) 问题在于在IOC中注册 替换: 使用: 解决了。public class UserDbContext : DbContext
{
public UserDbContext (DbContextOptions<UserDbContext> options) : base(options)
{
}
public DbSet<User> Users{ get; set; }
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
}
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
}
}
public class Startup
{
public Startup(IConfiguration configuration)
{
Configuration = configuration;
}
public IConfiguration Configuration { get; }
public void ConfigureServices(IServiceCollection services)
{
services.AddOptions();
services.Configure<Settings>(Configuration);
var appSettings = services.BuildServiceProvider().GetService<IOptions<Settings>>().Value;
services.AddDbContext<DbContext>(options =>
options.UseSqlServer(appSettings.DataStoreSettings.ConnectionString));
services.AddControllers();
}
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
app.UseHttpsRedirection();
app.UseRouting();
app.UseAuthorization();
app.UseEndpoints(endpoints =>
{
endpoints.MapControllers();
});
using (var serviceScope = app.ApplicationServices.GetService<IServiceScopeFactory>().CreateScope())
{
var context = serviceScope.ServiceProvider.GetRequiredService<DbContext>();
context.Database.Migrate();
}
}
}
public class Program
{
public static void Main(string[] args)
{
CreateHostBuilder(args).Build().Run();
}
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup<Startup>();
});
}
Add-Migration Initial -c UserDbContext -Verbose
Add-Migration
无法正常工作,如果我需要使用迁移,是否不能将依赖注入与EF核心一起使用?1 个答案:
DbContext
。services.AddDbContext<DbContext>(options =>
options.UseSqlServer(appSettings.DataStoreSettings.ConnectionString));
services.AddDbContext<UserDbContext>(options =>
options.UseSqlServer(appSettings.DataStoreSettings.ConnectionString));