[英]Entity framework migrations errors
我想為現有實體創建遷移。 我有一個數據上下文 class
public class DataContext : DbContext
{
public DataContext()
{
}
public DataContext(DbContextOptions<DataContext> options) : base(options)
{
}
public DbSet<AppUser> Users { get; set; }
}
我將它添加到 IServiceCollection 擴展方法中的服務中 -
public static class DependencyInjection
{
public static IServiceCollection AddInfrastructure(this IServiceCollection services, IConfiguration configuration)
{
services.AddDbContext<DataContext>(options =>
{
options.UseSqlServer(configuration.GetConnectionString("DefaultConnection"),
b => b.MigrationsAssembly(typeof(DataContext).Assembly.FullName));
});
return services;
}
}
當我嘗試從 Entity Framework 命令工具添加遷移時 - “dotnet ef migrations add InitialCreate”出現這樣的錯誤:
沒有為此 DbContext 配置數據庫提供程序。 可以通過覆蓋“DbContext.OnConfiguring”方法或在應用程序服務提供程序上使用“AddDbContext”來配置提供程序。 如果使用了“AddDbContext”,那么還要確保您的 DbContext 類型在其構造函數中接受 DbContextOptions object 並將其傳遞給 DbContext 的基本構造函數。
無法真正理解我的代碼有什么問題。 它實際上是通過覆蓋 OnConfiguring 方法來工作的,但我需要這種方法的解決方案。 有任何想法嗎?
嘗試刪除默認的公共構造函數(無參數的)。
當您執行 CLI 命令時,您有一些額外的選項,例如 --project 和 --startup-project。 通過指定它們,它將允許使用主機構建器來創建您的數據庫上下文,並且您不需要這個無參數的構造函數。
ef cli 使用反射來查看您的項目,然后執行主機構建器設置以獲得服務構建器。 從那里它將實例化數據庫上下文。 如果它不起作用。 它將首先退回到設計時工廠。 最后將使用默認構造函數(在這種情況下正在發生)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.