C# 当我更改任何行数据时,模型类不会更新
我有一个名为:C# 当我更改任何行数据时,模型类不会更新,c#,sql,entity-framework,C#,Sql,Entity Framework,我有一个名为:webageroles的模型类,有一个名为isAccessable的布尔字段。现在我有了一个查询来选择值: var drafts = db.WebpageRoles.Where(d => d.PageId == pageid && d.RoleId == roID).ToList(); 当我构建它时,它返回isAccessable=true,但当我在数据库中手动将其更改为false时,查询返回相同的值(意思是true),但数据库包含false 当我再次构建它
webageroles
的模型类,有一个名为isAccessable
的布尔字段。现在我有了一个查询来选择值:
var drafts = db.WebpageRoles.Where(d => d.PageId == pageid && d.RoleId == roID).ToList();
当我构建它时,它返回isAccessable=true
,但当我在数据库中手动将其更改为false
时,查询返回相同的值(意思是true
),但数据库包含false
当我再次构建它时,它会带来新的价值
这有什么问题吗?非常确定您有一个长期运行的上下文“ 也就是说,您的启动代码中有:
public static SomeDbContext MyGlobalContext=new SomeDbContext()
然后,在整个代码中使用
MyGlobalContext
。因此,您的上下文仅在启动时循环使用,并且大部分时间您访问的是本地缓存,而不是数据库。因此,数据库中的直接更改不会到达您的应用程序。您的查询不包含isaccessible
,因此我不理解这个问题。您使用的是哪种数据库?你是如何连接到它的?例如,您是否使用实体框架?是否确实已将值保存到数据库,并且正在再次执行查询(而不是将结果重新读取到上一个查询)?是否在project运行时编辑这些值?可能存在数据缓存。通常,实体框架会维护缓存层,直到您保存或更新数据为止,它不会更新缓存。请尝试从应用程序更新,然后尝试在运行应用程序时启动此函数,并返回数据库中的正确值。现在我更改了数据库中的一个值并再次触发,但并没有返回任何更改值。但当我停止应用程序并再次运行时,它将获得新的值。为什么?