1

我有一个使用 Entity Framework 4.1 的项目。该模型是根据 SQL Server 2008 R2 机器上的数据库建模的。

我有一个包含 3 个 nvarchar 列、2 个位列和 1 个日期时间列的表。

该应用程序正在使用存储库模式和依赖注入。DI 容器中的所有项目都设置为 Transient,但设置为 Hierarchical 的上下文除外。

现在,当我对实体框架中的模型运行 lambda 查询时,它会按预期提取我的数据。例如:

 var someData = _dataRepository.Get(data => data.Name == name && data.IsEnabled);

基本上,存储库的 Get 方法是 .Where(filter) linq 表达式的包装器。

所以问题是这样的:

当我将数据库(通过 SMS 或在使用 .SaveChanges 的代码中)更新到数据库中的位列或日期时间列并重新查询数据时,返回的查询数据将返回预期的内容。但是,每当我在其中一个 nvarchar 列上更新 (SMS/.SaveChanges) 并重新查询时,它都会返回 nvarchar 用于从先前查询中包含的“旧”数据——而不是更新的数据。

实体框架是否有一些导致这种情况发生的继承缓存?

4

0 回答 0