C# ASP.NET Core AddDbContextPool未触发ChangeTracker事件
我有一个ASP.NET Core 3.0应用程序,使用.NET Core 3.0和EF Core 3.0。我正在使用AddDbContextPool注册我的DbContext:C# ASP.NET Core AddDbContextPool未触发ChangeTracker事件,c#,asp.net-core,ef-core-3.0,C#,Asp.net Core,Ef Core 3.0,我有一个ASP.NET Core 3.0应用程序,使用.NET Core 3.0和EF Core 3.0。我正在使用AddDbContextPool注册我的DbContext: services.AddDbContextPool<IMyDbContext, MyDbContext>( optionsAction: options => options.UseSqlServer( connectionString: Conf
services.AddDbContextPool<IMyDbContext, MyDbContext>(
optionsAction: options => options.UseSqlServer(
connectionString: Configuration.GetConnectionString("MyDatabase"))
);
services.AddDbContextPool(
options操作:options=>options.UseSqlServer(
connectionString:Configuration.GetConnectionString(“MyDatabase”))
);
在DbContext构造函数中,我附加到ChangeTracker的两个事件:
public MyDbContext(DbContextOptions<MyDbContext> options)
: base(options)
{
// Attach to our important events
ChangeTracker.StateChanged += ChangeTracker_StateChanged;
ChangeTracker.Tracked += ChangeTracker_Tracked;
}
public MyDbContext(DbContextOptions)
:基本(选项)
{
//重视我们的重要事件
ChangeTracker.StateChanged+=ChangeTracker\u StateChanged;
ChangeTracker.Tracked+=ChangeTracker\u Tracked;
}
第一次运行应用程序时,当我向上下文添加项目时,会触发事件。页面加载完成后,我会发出另一个请求,但这次在向上下文添加项目时不会触发任何事件。当它从池中提取上下文时,似乎不再注册事件处理程序
使用常规AddDbContext时没有问题。这是预期的行为还是我应该以不同的方式注册我的事件处理程序 这可能被认为是一个bug——你能在 上下文实例应重置为其构造后的状态。然而,这可能是棘手的事件 最好的方法是不要
AddDbContextPool
。在大多数情况下,使用AddEbContext时的性能差异可以忽略不计。没问题: