web-dev-qa-db-ja.com

AddDbContextは構成で呼び出されましたが、コンテキストタイプ「MyContext」はパラメーターなしのコンストラクターのみを宣言しますか?

次のコンソールアプリケーション(.Netコア2.0)では、_scaffold-dbcontext_が次のDbContextを作成しました

_public partial class MyContext : DbContext
{
    public virtual DbSet<Tables> Tables { get; set; }

    protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
    {
        if (!optionsBuilder.IsConfigured) { optionsBuilder.UseSqlServer(Program.Conn); }
    }

    protected override void OnModelCreating(ModelBuilder modelBuilder) { .... }
}
_

Main()(static void Main(string[] args))では、次のコード

_var services = new ServiceCollection();
var conn = configuration.GetConnectionString("MySource");
services.AddDbContext<MyContext>(o => o.UseSqlServer(conn)); // Error
_

次のランタイムエラーが発生しましたか?

AddDbContextは構成で呼び出されましたが、コンテキストタイプ「MyContext」はパラメーターなしのコンストラクターのみを宣言します。これは、AddDbContextに渡された構成が使用されないことを意味します

30
ca9163d9

MyContextを介してAddDbContextを構成する場合、エラーが言ったように、DbContextOptions<MyContext>型のパラメーターを受け取るコンストラクターをMyContextクラスに追加する必要があります。未満

public MyContext(DbContextOptions<MyContext> options)
    : base(options)
{ }

そうしないと、ASP.Net CoreはAddDbContextで設定した構成を挿入できません。

56
CodeNotFound