1

Entity Framework 4.1 を使用しているプロジェクトがあります。モデルは、SQL Server 2008 R2 マシン上のデータベースからモデル化されています。

3 つの nvarchar 列、2 つの bitcolumns、および 1 つの datetime 列を持つテーブルがあります。

アプリケーションは、リポジトリ パターンと依存性注入を使用しています。Hierarchical に設定されているコンテキストを除いて、DI コンテナ内のすべての項目が Transient に設定されています。

これで、エンティティ フレームワークのモデルに対してラムダ クエリを実行すると、期待どおりにデータが取得されます。例えば:

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

基本的に、リポジトリの Get メソッドは .Where(filter) linq 式のラッパーです。

だから問題はこれです:

データベースを (SMS 経由または .SaveChanges を使用したコード内で) データベースの bit 列または datetime 列に更新し、データを再クエリすると、返されたクエリ データが期待どおりに返されます。ただし、nvarchar 列の 1 つで (SMS/.SaveChanges) を更新して再クエリを実行すると、更新されたデータではなく、nvarchar が以前のクエリから格納するために使用する「古い」データが返されます。

Entity Framework には、これが発生する原因となる継承キャッシュがありますか?

4

0 に答える 0