gpt4 book ai didi

c# - Entity Framework 缓存问题

转载 作者:IT王子 更新时间:2023-10-29 03:50:24 25 4
gpt4 key购买 nike

我是 Entity Framework 的新手。

我已经使用 EF 在我的数据库中获取了一些值。它完美返回,并且值显示在标签中。但是当我删除表中的所有值时(不使用 EF),EF 查询返回我的旧值。我知道 EF 将值存储在缓存中并为后续运行返回缓存数据。这个对吗?

那么当我删除了数据库中的所有值但 EF 返回旧值时,如何解决问题?

编辑:

现在我使用了 datamodel.SaveChanges()。但现在它也返回相同的旧值。

我的示例查询如下所示:

SchoolBriefcaseEntities datamodel = new SchoolBriefcaseEntities();
datamodel.SaveChanges();
List<Compliance> compliance=new List<Compliance>();
IList<ComplianceModel> complianceModel;
if (HttpContext.Current.User.IsInRole("SuperAdmin"))
{
compliance = datamodel.Compliances.Where(c => c.School.DistrictId == districtId).ToList();
}

最佳答案

如果您知道更改发生在 EF 外部并且想要刷新特定实体的 ctxt,您可以调用 ObjectContext.Refresh

datamodel.Refresh(RefreshMode.StoreWins, orders);

如果这看起来很常见,您应该在查询中禁用对象缓存:

SchoolBriefcaseEntities datamodel = new SchoolBriefcaseEntities();
datamodel.tblCities.MergeOption = MergeOption.NoTracking;

或关闭特定实体的对象级缓存,

Context.Set<Compliances>().AsNoTracking();

关于c# - Entity Framework 缓存问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15828811/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com