Лучший отвечающий
Entity Framework + Dynamic Data - не работает наследование

Вопрос
-
В БД есть две таблицы Staff и User. Первая - общая информация о персоне (id, ФИО и т.п.), вторая - User - расширение таблицы Staff для описания пользователей (не все человеки из БД ими являются). Содержит поля staff_id, login и т.п.
В модели Entity Framework реализовал наследование User от Staff, протестировал в консольном приложении - всё рабоате как следует.
Создал новый сайт Dynamic Data, подключил эту модель к нему. Другие таблицы из модели работают как надо, только сущности User нет вообще, а при попытке перейти на Staff вываливается ошибка:
Определенный запрос имеет полиморфный или абстрактный возвращаемый тип. Определите фильтр
EntityTypeFilter, чтобы ограничить запрос одним устойчивым типом.
Где нужно определять этот тип ?
Скачал Dynamic Data Preview 4, там пример с аналогичным наследованием, работает. Там же есть шаблон EntityFrameworkProject, попытался подключить свою модель к нему. При запуске в методе Page_Load на строке System.Collections.IList visibleTables = Global.DefaultModel.VisibleTables;
происходит исключение An error occurred during model registration and this operation cannot be performed.
Тоже не лучше... Что с этим делать?8 октября 2009 г. 10:24
Ответы
-
Проблема решается просто. Нужно всё-таки использовать шаблон проекта EntityFrameworkProject из архива Dynamic Data Preview 4. Дело в том, что при открытии его как отдельного проекта, всё работает, т.к он использует обновленные версии dll из своей папки CommonFiles (в этом же шаблоне проекта лежит), а при попытке включить этот проект в существующее решение эти сборки почему-то меняются на аналогичные стандартные сборки из установленного Framework. Просто пришлось вручную их удалить и явно указать из эти dll из папки CommonFiles.
- Помечено в качестве ответа I.Vorontsov 12 октября 2009 г. 6:18
12 октября 2009 г. 6:05
Все ответы
-
Попробуйте пока обратится к следующему:
Наследование в Entity Framework
Мастер настройки источника данных
EntityTypeFilter8 октября 2009 г. 11:38 -
Спасибо за оперативный ответ, но статья про наследование немного не про то, что у меня. Там из одной таблицы в БД создают две сущности в модели, а у меня две таблицы в БД уже представляют наследование. И, похоже, у меня проблема все-таки с Dynamic Data, а не с самой моделью.
Я попробовал сделать такой же проект Dynamic Data на VS2010, построил модель по тем же таблицам и все заработало с первого раза! Люди отдельно, пользователи отдельно, причем последние дополнены данными из первой сущности как и следует. Проект использует Framework 4.0, при смене на 3.5 отваливаются ссылки на System.Web.Entity, System.Web.DynamicData и другие.
Что же получается, мне не удастся сделать всё в VS2008 на FW3.5 ? Может нужно обновить какие-то компоненты?8 октября 2009 г. 12:45 -
обновите до FW 3.5 SP1, должно поддерживаться8 октября 2009 г. 13:08
-
Проблема решается просто. Нужно всё-таки использовать шаблон проекта EntityFrameworkProject из архива Dynamic Data Preview 4. Дело в том, что при открытии его как отдельного проекта, всё работает, т.к он использует обновленные версии dll из своей папки CommonFiles (в этом же шаблоне проекта лежит), а при попытке включить этот проект в существующее решение эти сборки почему-то меняются на аналогичные стандартные сборки из установленного Framework. Просто пришлось вручную их удалить и явно указать из эти dll из папки CommonFiles.
- Помечено в качестве ответа I.Vorontsov 12 октября 2009 г. 6:18
12 октября 2009 г. 6:05