В этом примере здесь Скотт показывает выполнение запроса Linq к dbContext и привязку результата непосредственно к GridView для отображения списка продуктов. . В его примере используется версия CTP4 для Code First.
Однако, когда я пытаюсь сделать то же самое, используя последнюю версию EntityFramework 4.1, я получаю следующую ошибку:
Связывание данных непосредственно с запросом хранилища (DbSet, DbQuery, DbSqlQuery) - это не поддерживается. Вместо этого заполните DbSet данными, например, вызывая Load в DbSet, а затем привязывайтесь к локальным данным.
Я вижу, что объект DBQuery намеренно выдает эту ошибку в своей реализации IListSource.GetList (), который используется в привязке данных.
Есть идеи, почему его пример работает? Кстати, я знаю, что могу выполнить эту работу, вставив projects.ToList ()
. Мой главный вопрос заключается в том, изменилось ли что-то в выпускной версии, из-за чего такие вещи больше не работают, или мне где-то не хватает чего-то, что могло бы обойти эту ошибку.
Для справки, я имею в виду такой код, как это:
MyDbContext db = new MyDbContext();
var projects = from p in db.Projects
where p.AnotherField == 2
select p;
grdTest.DataSource = projects;
grdTest.DataBind();