Невозможно выбрать таблицу для дискриминатора (сначала модель) - PullRequest
1 голос
/ 30 декабря 2011

Я пытаюсь запустить проект, нуждающийся в таблице за иерархию. Я делал это в прошлом с NHibernate, но мы хотим избежать ручного редактирования файлов сопоставления XML - поэтому пытаемся использовать Entity Framework и его Designer.

Я следил за этим примером онлайн: http://mosesofegypt.net/post/Inheritance-and-Associations-with-Entity-Framework-Part-1.aspx

При попытке выбрать таблицу из раскрывающегося списка <Добавить таблицу или представление> я не могу выбрать какие-либо таблицы, вместо этого в списке отображается «(Пусто)».

failing hard

Единственное отклонение, которое я сделал из учебника, заключается в том, что я не генерировал таблицу Person из образца базы данных, насколько я могу судить, это не должно иметь значения (мы хотим сгенерировать базу данных из модель, а не наоборот).

Не уверен, каким критериям должна соответствовать таблица, чтобы иметь право добавить дискриминатор к ...

1 Ответ

1 голос
/ 30 декабря 2011

Если вам нужно сгенерировать БД из модели, вы не сможете увидеть ни одну таблицу в отображении, потому что при создании базы данных генерируется как отображение, так и информация о таблицах. EDMX имеет довольно сложную структуру (гораздо более сложную, чем очень простые hbm-файлы для NHibernate). Сложность еще хуже, потому что у EDMX нет ничего неявного - все должно быть описано, и оно должно быть описано три раза.

EDMX состоит из трех частей:

  • CSDL - концептуальная модель, которую вы видите в конструкторе (классы)
  • SSDL - описание базы данных - его можно просмотреть в браузере модели, но оно доступно только для чтения
  • MSL - отображение между SSDL и MSL (это то, что вы пытаетесь редактировать в этом окне).

Когда вы собираетесь использовать модель вначале (рисовать сущности в конструкторе и генерировать базу данных), вы определяете только CSDL, а все остальное генерируется с помощью SQL для базы данных. Вам также, вероятно, понадобится другой шаблон / рабочий процесс для генерации БД, потому что я предполагаю, что по умолчанию будет использоваться наследование таблиц по типам. Проверьте Блок питания для генерации базы данных - он должен содержать шаблон для TPH.

...