【发布时间】:2013-05-15 22:29:24
【问题描述】:
我对实体框架有一个奇怪的问题:
我在 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" />
【问题讨论】:
-
这里没什么好说的了。开始时是否在数据库中保存了正确的值? _myEF 是什么类型?表中是否有多个匹配项因 FirstOrDefault 而丢失?
-
没关系,当我通过 Visual Studio 在本地启动它时,我看到了新值。如果我使用已部署的版本,我会看到数据库中不再存在的旧值
-
_myEF 是 ObjectContext 类型
-
您能否向我们展示您的数据库的连接字符串?
-
请记住,EF 在内部缓存上下文中的项目。
_myEF是每个请求的新对象吗?因为如果它在static字段中,那就是造成这种情况的原因。
标签: sql-server entity-framework