В этом примере здесь Скотт показывает выполнение запроса Linq к dbContext и привязывает результат непосредственно к GridView, чтобы показать список продуктов. В его примере используется версия CTP4 для кода 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();