虽然我改变了实体框架,但实体框架给了我旧的数据

时间:2013-05-14 10:17:49

标签: sql-server entity-framework

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

我在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=&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" />

1 个答案:

答案 0 :(得分:3)

实体框架在DbContext实例内部缓存对象。这些都是短暂的,缓存的目的是每次查找具有相同ID的实体时,您将获得所述实体的相同实际实例。

这意味着在使用Entity Framework时,不应在DbContext字段中存储static。为每个请求创建一个新的。