【发布时间】:2020-11-10 09:36:45
【问题描述】:
也许我的期望需要重新设定。
我正在为“非跟踪”上下文进行概念验证。 在上下文的构造函数中,我添加了以下几行:
ChangeTracker.QueryTrackingBehavior = QueryTrackingBehavior.NoTracking;ChangeTracker.Tracked += ChangeTracker_Tracked;
以及以下处理程序:
private void ChangeTracker_Tracked(object sender, Microsoft.EntityFrameworkCore.ChangeTracking.EntityTrackedEventArgs e)
{
Debug.WriteLine("Tracking has commenced");
}
我的期望是,如果我在上下文中添加一个实体,Tracked 处理程序不会因为 NoTracking 跟踪行为配置而触发。但是当我添加一个实体时,果然,事件触发了!
var pub = new Publishers
{
Name = "Blabla"
};
var ctx = serviceProvider.GetService<LibraryNoTrackingContext>();
ctx.Publishers.Add(pub);
根据我的观察,QueryTrackingBehavior 配置似乎不起作用,因为正在进行更改跟踪。
我是不是搞错了?如果是这样,No Change Tracking 是如何工作的?
注意:我也尝试了以下代码:
serviceCollection.AddDbContext<LibraryNoTrackingContext>(
o =>
{
o.UseSqlServer(configuration.GetConnectionString("Default"));
o.UseQueryTrackingBehavior(QueryTrackingBehavior.NoTracking);
});
【问题讨论】:
标签: entity-framework-core entity-framework-core-3.0