EF DataContext несовместим с использованием таблицы данных EF? (VS11) - PullRequest
0 голосов
/ 25 марта 2012

У меня есть бета-приложение WPF VS11 с Microsoft Datagrid на основе таблицы из модели Entity Framework 5.0b2 (из базы данных сервера SQL). (Сетка использует любой код, который был автоматически сгенерирован путем добавления источника данных из модели структуры сущностей и перетаскивания таблицы из этой модели на поверхность разработки.). Затем я использовал надстройку генератора кода DBContext EF5.0 для генерации типов DbContext, которые я мог бы использовать в приложении.

Результат не был хорошим. Я получил ошибку компиляции, которая кажется нефиксированной; по крайней мере, мои попытки усугубили ситуацию. Сетка данных не любит DbContext и не сосуществует с ним (когда и таблица данных, и DbContext основаны на одной базе данных и таблицах). Есть ли обходной путь, может быть, путем изменения шаблона генератора кода?

Сообщение об ошибке вставляется в конце. Спасибо за любую помощь или понимание этого.

(обратите внимание, что следующий тесно связанный пост не является ответом, потому что, хотя я могу преобразовать dbcontext в objectcontext, я не могу заставить datagrid работать с ним должным образом, и если я преобразую objectcontext в dbcontext, я не ' t имеет автоматически сгенерированные типы dbcontext: Преобразование DBContext в ObjectContext для использования с GridView ). Я ищу довольно простой обходной путь - я уверен, что есть обходной путь, если я начну вручную кодировать все типы и преобразования, но я хочу сохранить простоту использования автоматически сгенерированного кода - я не хочу быть занятым с работой генератор кода может, и так должен, делать. Если решения не существует, я полагаю, что я буду основывать элементы управления на ado.net и оставлю инфраструктуру сущностей для не-пользовательского кода.

Error
Невозможно неявно преобразовать тип 'System.Data.Entity.DbSet' в 'System.Data.Objects.ObjectQuery'

Документы \ Visual Studio 11 \ Projects \ WpfApplication3 \ WpfApplication3 \ MainWindow.xaml.cs

Строка, вызвавшая ошибку (созданная Microsoft путем перетаскивания сетки данных с таблицей EF в качестве источника): System.Data.Objects.ObjectQuery myTblsQuery = myDbsEntities.MyTbls;

1 Ответ

0 голосов
/ 25 марта 2012

Код, созданный перетаскиванием в конструкторе WPF, никогда не был очень хорошим, и команда WPF не обновила его для работы с DbContext. Лучше всего либо перейти в ObjectContext, как предлагают другие ответы, либо использовать гораздо лучшую привязку данных WPF, поддерживаемую DbContext, но не использовать перетаскивание.

Связывание данных WPF с DbContext довольно просто, потому что свойство Local каждого DbSet на самом деле представляет собой ObservableCollection, с которым WPF естественно очень хорошо связывается. Так, например, вы заканчиваете тем, что связываете ваши источники представления что-то вроде этого:

categoryViewSource.Source = _context.Categories.Local;

Эта запись блога содержит более подробную информацию: http://blogs.msdn.com/b/adonet/archive/2011/03/14/10138486.aspx

...