ADO.NET Entity Framework: мастер обновления не будет добавлять таблицы

.net ado.net entity-framework primary-key visual-studio-2008

Вопрос

Я добавил новую модель данных ADO.Net Entity в свой проект и использовал мастер обновления для добавления таблиц в модель. Пять из выбранных таблиц были добавлены в область дизайна. Две другие таблицы не добавятся. Я выбираю их в мастере и нажимаю кнопку Готово, но они никогда не отображаются на поверхности дизайна.

Это ошибка или в некоторых ситуациях таблица не может быть добавлена в модель (по замыслу)?


ОБНОВЛЕНИЕ: XML (* .edmx) выявляет проблему.

<!--Errors Found During Generation:
warning 6013: The table/view 'FooBar.dbo.Roles' does not 
have a primary key defined and no valid primary key could be inferred. 
This table/view has been excluded. To use the entity you will need to 
review your schema, add the correct keys and uncomment it.-->
<!--<EntityType Name="Roles">
    <Property Name="role_id" Type="decimal" />
    <Property Name="role_desc" Type="nvarchar" MaxLength="30" />
</EntityType>-->

Спасибо Крейг за ваш ответ.

Принятый ответ

Поверхность дизайна отличается от модели объекта. В EDMX может быть таблица в сопоставлении, которая не отображается на поверхности конструктора. Просмотрите файл как XML, чтобы увидеть, так ли это. В этом случае мастер обновления не позволит вам повторно добавить таблицы, поскольку они уже являются частью модели сущностей. Итак, вообще говоря, Мастер обновлений знает больше о вашей модели сущности, чем о поверхности проектирования, как таковой .

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


Популярные ответы

Установите первичные ключи для всех таблиц или только один непроверенный флажок «Разрешить ноль» для любого столбца каждой таблицы. Меня устраивает :)



Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow
Является ли этот КБ законным? Да, узнайте, почему
Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow
Является ли этот КБ законным? Да, узнайте, почему