2015-05-12 2 views
2

Я совершенно новый, поэтому простите меня за то, что я не знаю, как правильно это сказать.Entity Framework, доступ к методам db

Я установил Entity Framework с довольно большой базой данных и пытался научиться управлять таблицами в базе данных.

Мой первый метод работал, но я столкнулся с ошибкой. Он будет загружать данные в datagridview просто отлично, но при сдвиге панели для просмотра таблиц, не отображаемых на экране, это вызовет ошибку. Это процесс, который вызвал ошибку:

using (var context = new MydbEntities()) 
{ 
    var query = (from a in db.Configurations 
       select a); 

    var result = query.ToList(); 
    dataGridView1.DataSource = result; 
} 

Теперь, если изменить первую строку MydbEntities db = new MydbEntities(); я не получаю сообщение об ошибке. Я пытаюсь следить за онлайн-учебниками, но я подумал, может быть, кто-то может помочь мне понять разницу в этих двух.

+1

Какая у вас ошибка? –

+2

Возможно, у нас есть детали ошибки? –

+0

Есть ли у 'Configurations' какие-либо связанные сущности? –

ответ

-1

В основном вы столкнулись с ленивой нагрузкой и фактом, что Контекст был удален, когда вы пытались запросить следующую партию записей.

Вы Serveral варианты здесь, лучшие, на мой взгляд, являются:

  1. Использование EntityDataSource. Таким образом DataControl позаботится о создании и удалении контекста EF. (MSDN имеет неплохие характеристики).

  2. Внедрение пользовательских ObjectDataSource. Используйте контекст EF в методах ObjectDataSource, создавая и применяя его при необходимости. (This article по теме немного устарел, но вы все еще можете получить эту идею).

+0

Что именно указывает на то, что это решение? В чем проблема uberhaupt? –

+0

Спасибо, Витторе, я подумал, что так оно и есть. Есть ли проблема со вторым способом? В основном заменяем 'using (var context = new MydbEntities())' с 'MydbEntities db = new MydbEntities();' похоже, устраняет ошибку. Я просто хочу убедиться, что это не вызовет других проблем. –

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