Entity framework EF Core 2.2:多次使用同一DbContext实例从数据库中获取记录,结果始终相同
我面临着一个问题:我们有一个ASP.NETCore2.2WebAPI项目,其中包含EFCore2.2。我们使用默认的IOC框架来创建具有作用域生存期的Entity framework EF Core 2.2:多次使用同一DbContext实例从数据库中获取记录,结果始终相同,entity-framework,inversion-of-control,ef-core-2.2,Entity Framework,Inversion Of Control,Ef Core 2.2,我面临着一个问题:我们有一个ASP.NETCore2.2WebAPI项目,其中包含EFCore2.2。我们使用默认的IOC框架来创建具有作用域生存期的DbContext。我们有一个套接字管道连接到我们的ASP.NETWebAPI服务 我发现,当我们在web前端更改数据时,套接字管道将始终获得旧的结果(我们使用.FirstOrDefault()来获取数据,这不应该是一级缓存的问题) 所以我推断这可能是因为DbContext的作用域生存期,所以我将其更改为瞬态生存期。而且它有效!我们得到了修改过的记
DbContext
。我们有一个套接字管道连接到我们的ASP.NETWebAPI服务
我发现,当我们在web前端更改数据时,套接字管道将始终获得旧的结果(我们使用.FirstOrDefault()
来获取数据,这不应该是一级缓存的问题)
所以我推断这可能是因为DbContext
的作用域生存期,所以我将其更改为瞬态生存期。而且它有效!我们得到了修改过的记录
我有两个问题:
DbContext
行为吗?或者我的代码中有一些棘手的问题DbContext
需要多少性能?因为我可能会让每个DbContext
都是瞬态的但你不应该那样做。使用请求范围的DbContext非常有用。例如,您可以在应用程序的各个层中使用DbContext,而无需传递一个,并且您可以更轻松地管理事务。创建一个新的DbContext一点也不昂贵:关于您遇到的其他问题,我不明白您的意思。谢谢,David!因此,我仍然使用作用域生存期,但将Get方法更改为无跟踪方法。你能给我一些建议吗?