2010-07-08 3 views
0

Я новичок в EntityFramework.Entity framework: как я могу использовать более одного контекста?

Мое приложение имеет пул экземпляров контекстного объекта (каждый контекст имеет 1 соединение с БД).

Проблема заключается в том, что при обновлении объекта (и вызове SaveChanges) данные обновляются в БД и в контексте обновления, но когда я выбираю из другого экземпляра, он получает старые данные выбранного объекта.

Пример:

Давайте представим таблицу с именем TBL.

Таблица имеет 2 столбца: идентификатор и данные.

Существует одна строка: идентификатор = 1, данные = 2.

EFContext context1 = new EFContext(); 

EFContext context2 = new EFContext(); 

var obj1 = context1.tbl.Where(a => a.id == 1); 

var obj2 = context2.tbl.Where(a => a.id == 1); 

obj2.data = 10; 

context2.SaveChanges(); 

var obj3 = context1.tbl.Where(a => a.id == 1); 

После выполнения этих строк, obj3.data содержит 2, вместо 10.

Как я могу решить эту проблему?

Я не хочу создавать экземпляр контекста каждый раз, когда хочу получить доступ к БД.

Спасибо!

ответ

0

Я думаю Освежающий ваш объект должен сделать трюк, как это:

//after 
context2.SaveChanges(); 

//refresh obj1 
context1.Refresh(RefreshMode.StoreWins, obj1); 
+0

Спасибо. Но если у меня много объектов внутри, есть ли способ обновить все таблицы? Есть ли способ заставить объект получить данные из БД каждый раз, когда я пытаюсь выбрать данные? Еще раз спасибо. – Mattan

Смежные вопросы