Entity Framework を使用して SQL サーバーからエンティティを取得するために、Linq クエリを使用しています。エンティティを更新すると、EF が結果をキャッシュしています。これは、ObjectContext が静的変数 (以下) にあるためだと思われます。以下のコードを使用してデータを更新する唯一の方法は、メソッドを呼び出して、古いデータが表示される可能性がある場合に設定_db
するnull
ことです (例: GridView 内)。古いデータが表示される可能性があることを検出する代わりに、キャッシュを防止する方法や、データ層でこのメソッドを呼び出す何らかの終了要求ハンドラーを追加する方法はありますか?
private static ServiceEntities _db;
protected static ServiceEntitiesDb
{
get
{
if (_db == null)
{
_db = new ServiceEntities();
_db.Contacts.MergeOption = MergeOption.OverwriteChanges; // failed
}
return _db;
}
}
public static IEnumerable<Contact> GetContactsByName(string name) {
var items = Db.Contacts;
var filteredName = items.Where(i => (i.Name??string.Empty).IndexOf(name) >=0);
return filteredName;
}