【发布时间】:2021-11-15 17:50:50
【问题描述】:
我有一个使用 .NET Core 3.0 和 EF Core 3.0 的 ASP.NET Core 3.0 应用程序。我正在使用 AddDbContextPool 注册我的 DbContext:
services.AddDbContextPool<IMyDbContext, MyDbContext>(
optionsAction: 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;
}
第一次运行应用程序时,当我将项目添加到我的上下文时会触发事件。页面加载完成后,我会发出另一个请求,但这次在向我的上下文中添加项目时,我的任何事件都不会触发。似乎当它从池中提取上下文时,它不再注册事件处理程序。
当我使用常规 AddDbContext 时,我没有任何问题。这是预期的行为还是我应该以不同的方式注册我的事件处理程序?
【问题讨论】:
标签: c# asp.net-core ef-core-3.0