簡體   English   中英

實體框架遷移錯誤

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM