我对实体框架有一个奇怪的问题:
我在Windows Server上有一个SQL Server数据库,我通过我的应用程序通过Entity Framework访问它。
现在我在数据库中更改了一个条目,但是使用Entity Framework的应用程序仍然为我提供旧值,尽管它没有保存在任何地方。
这可能是什么以及如何解决这个问题?
修改:
我从数据库中获取数据如下:
(from p in _myEF.master_Items where p.id == userId
select p.Location).FirstOrDefault();
EDIT2 :
当我通过Visual Studio在本地启动时,我看到了新值。如果我使用已部署的版本,我会看到不再在数据库中的旧值
EDIT3 :
这是我的连接字符串<add name="MyEntities" connectionString="metadata=res://*/MyData.csdl|res://*/MyData.ssdl|res://*/MyData.msl;provider=System.Data.SqlClient;provider connection string="data source=foo;initial catalog=MyDb;persist security info=True;user id=Admin;password=xxxx;multipleactiveresultsets=True;App=EntityFramework"" providerName="System.Data.EntityClient" />
答案 0 :(得分:3)
实体框架在DbContext
实例内部缓存对象。这些都是短暂的,缓存的目的是每次查找具有相同ID的实体时,您将获得所述实体的相同实际实例。
这意味着在使用Entity Framework时,不应在DbContext
字段中存储static
。为每个请求创建一个新的。