次のコンソールアプリケーション(.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に渡された構成が使用されないことを意味します
MyContext
を介してAddDbContext
を構成する場合、エラーが言ったように、DbContextOptions<MyContext>
型のパラメーターを受け取るコンストラクターをMyContext
クラスに追加する必要があります。未満
public MyContext(DbContextOptions<MyContext> options)
: base(options)
{ }
そうしないと、ASP.Net CoreはAddDbContext
で設定した構成を挿入できません。