0

重複の可能性:
DbContext の内部キャッシュ (?)

DbContextmyと aIQueryableのインスタンスがあり、データベースViewModelBaseから数回リロードBootStrapperするIQueryable必要があります。クエリ式が何であるかを気にせずに、単純なメソッドを呼び出すことでそれを実行したいと考えています。

簡単に言えば:

IQueryable<T>私が持っている式とツールを書き換えずに、データをにロードしたいと思います:

1 => アンIQueryable

2 => のインスタンスDbContext

データベースのデータを変更して IQueryable.ToList() を試しても、結果が更新されません。

IQueryable<Person> ViewModelDataContext;
ViewModelDataContext = repository.GetAll<Person>();
var x = ViewModelDataContext.ToList();
//Some changes into database
repository = new Repository();
var y = ViewModelDataContext.ToList();
//But as result, the x is exactly returns the same result as y and I'd like the y to be updated after  database changes.

助言がありますか?

4

1 に答える 1

1

ほとんどの場合、問題は Entity Framework が (当然のことながら) 毎回同じエンティティ インスタンスを返すことです。これは ORM の重要な機能です。あなたの許可なしに、データベースからの新しい値でフィールドを上書きすることはありません。そうなった場合、アプリケーション全体で誤った状態の破損と非局所的な副作用が発生します。

このアプローチを使用して非エンティティ型をロードする場合、それは機能します。または、マージ オプションについてお読みください。

于 2012-08-12T10:23:12.383 に答える