2

我对实体框架有一个奇怪的问题:

我在 Windows Server 上有一个 SQL Server 数据库,我通过实体框架通过我的应用程序访问它。

现在我更改了数据库中的一个条目,但使用实体框架的应用程序仍然给了我旧值,尽管它没有保存在任何地方。

这可能是什么以及如何解决这个问题?

编辑
我从数据库中获取数据,如下所示:

(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=&quot;data source=foo;initial catalog=MyDb;persist security info=True;user id=Admin;password=xxxx;multipleactiveresultsets=True;App=EntityFramework&quot;" providerName="System.Data.EntityClient" />

4

1 回答 1

4

实体框架在DbContext实例内部缓存对象。这些都是短暂的,缓存的目的是让每次查找具有相同 ID 的实体时,都会得到该实体的相同实际实例。

这意味着在使用实体框架时,不应将 a 存储DbContextstatic字段中。为每个请求创建一个新请求。

于 2013-05-15T14:29:24.903 回答