EF 4.0模型缓存数据,并不检测修改后的数据

m_3*_*yan 6 singleton static caching readonly entity-framework-4

我正在开发ASP.NET应用程序,我有EF 4.0模型的问题.

EF模型检测新添加和删除的数据,但不检测数据库中的修改数据.

这是我所拥有的问题的一个例子.

A-数据库:

用于生成"Employees"数据库表的脚本

CREATE TABLE [dbo].[Employees]
  (
   [id] [int] IDENTITY(1, 1)
         NOT NULL,
   [name] [nvarchar](50) NULL,
   CONSTRAINT [PK_Employees] PRIMARY KEY CLUSTERED ( [id] ASC )
    WITH ( PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF,
        IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON,
        ALLOW_PAGE_LOCKS = ON ) ON [PRIMARY]
  )
ON [PRIMARY]
Run Code Online (Sandbox Code Playgroud)

B-应用:

以下是示例项目的链接Click Here.

重现错误的步骤:

1-创建数据库并运行脚本以创建表.

2-在employees表中插入测试数据,然后运行该应用程序.数据将加载到默认页面中.

3-更改连接字符串并运行应用程序.

3-更新数据库中的某些值(直接形成sql).并刷新页面

您会发现应用程序仍然显示旧数据,而如果您从表中添加或删除项目,则分别在视图中添加或删除它.

在此先感谢您的帮助.

Lad*_*nka 6

这是基于ORM基本概念的正确行为.对于Linq to SQL,它也是一样的.其原因是名为IdentityMap的设计模式,它确保由其键标识的每个实体仅为对象上下文创建一次.因此,您的第一个查询会创建entites但后续查询不会重新创建它们 - 它们已经存在.这篇非常好的文章描述了这个问题的完整描述.