我有一个使用Entity Framework 4.1的项目。该模型已从SQL Server 2008 R2计算机上的数据库建模。
我有一个包含3个nvarchar列,2个bitcolumns和1个datetime列的表。
应用程序正在使用存储库模式和依赖注入。 DI容器中的所有项都设置为Transient,但设置为Hierarchical的上下文除外。
现在,当我在实体框架中对模型运行lambda查询时,它会按预期拉取我的数据。例如:
var someData = _dataRepository.Get(data => data.Name == name && data.IsEnabled);
基本上,存储库的Get方法是.Where(过滤器)linq表达式的包装。
问题是:
当我将数据库(通过SMS或使用.SaveChanges的代码内)更新到数据库中的位列或日期时间列并重新查询数据时,返回的查询数据将返回预期的数据。但是,每当我在其中一个nvarchar列上更新(SMS / .SaveChanges)并重新查询时,它就会返回nvarchar用于包含先前查询的“旧”数据 - 而不是更新的数据。
Entity Framework是否有一些导致这种情况发生的继承缓存?