Как создать ключ сущности без вывода ключа (платформа Entity Framework)

В этом разделе описано, как изменить ключ сущности в EDMX-файле вручную, если мастеру моделей EDM или мастеру обновления модели не удалось вывести ключ сущности.

При создании или обновлении EDMX-файла с помощью мастера моделей EDM или мастера обновления модели ключ типа сущности сопоставляется с первичным ключом соответствующей таблицы. Если первичный ключ не определен (например, в представлении), то будет сделана попытка вывести уникальный ключ сущности на основании столбцов таблицы или представления. Выведенный ключ будет состоять из столбцов таблицы или представления, не допускающих значения NULL и не относящихся к двоичным типам данных. Если таблица или представление содержит только столбцы, допускающие значение NULL и двоичные столбцы, то ключ не будет выведен.

В том случае, если ключ сущности не выведен, сущность не будет добавлена к модели. Вместо этого к разделу SSDL EDMX-файла будет добавлен комментарий, содержащий элемент EntityType (с неопределенным ключом).

Дополнительные сведения о ключах сущностей см. в разделах EntityType Element (CSDL) и EntityType Element (SSDL).

Процедура, описанная в данном разделе, предполагает наличие допустимого EDMX-файла, открытого в Visual Studio.

Dd163156.note(ru-ru,VS.100).gifПримечание
Изменения, сделанные в разделе SSDL EDMX-файла, согласно нижеописанной процедуре, будут переписаны мастером обновления модели при ее обновлении.В данном случае, чтобы избежать необходимости внесения изменений в EDMX-файл вручную, измените схему базы данных таким образом, чтобы каждая таблица имела первичный ключ или чтобы один или несколько столбцов каждой таблицы или представления не допускали значений NULL или не являлись двоичными.

Добавление ключа сущности при невозможности вывода ключа из таблицы

Следующая процедура применяется к типу сущности, соответствующему таблице. Она предполагает наличие EDMX-файла, открытого в редакторе XML.

Если конструктор сущностей не может вывести ключ сущности из столбцов таблицы, то сущность не может быть добавлена в модель. Вместо этого к разделу SSDL EDMX-файла будет добавлен комментарий, содержащий элемент EntityType (с неопределенным ключом).

Добавление ключа сущности при невозможности его вывода из таблицы

  1. Раскомментируйте элемент EntityType в разделе SSDL EDMX-файла.

  2. Определите ключ для типа сущности, добавив соответствующие элементы Key в элемент EntityType. Дополнительные сведения см. в разделе EntityType Element (SSDL).

    Dd163156.note(ru-ru,VS.100).gifПримечание
    Столбец или набор столбцов, определяющие ключ сущности, должны уникальным образом идентифицировать строку таблицы.

  3. В разделе SSDL добавьте элемент EntitySet, указывающий таблицу, с которой сопоставляется добавленный тип сущности. Дополнительные сведения см. в разделе EntitySet Element (EntityContainer SSDL).

  4. В разделе CSDL добавьте элемент EntityType, соответствующий добавленному типу сущности SSDL. Дополнительные сведения см. в разделе EntityType Element CSDL.

  5. В разделе сопоставления C-S (концептуальные типы с типами хранения) добавьте элемент EntitySetMapping, определяющий сопоставление между добавленными SSDL и CSDL типами сущности. Дополнительные сведения см. в разделе EntitySetMapping Element (MSL).

Добавление ключа сущности при невозможности вывода ключа из представления

Следующая процедура применяется к типу сущности, соответствующему представлению. Она предполагает наличие EDMX-файла, открытого в редакторе XML.

Если конструктор сущностей не способен вывести ключ сущности из столбцов представления, то сущность не может быть добавлена в модель. Вместо этого, к разделу SSDL EDMX-файла будет добавлен комментарий, содержащий элемент EntityType (с неопределенным ключом).

Добавление ключа сущности при невозможности его вывода из представления

  1. Раскомментируйте элемент EntityType в разделе SSDL EDMX-файла.

  2. Определите ключ для типа сущности, добавив соответствующие элементы Key в элемент EntityType. Дополнительные сведения см. в разделе EntityType Element (SSDL).

    Dd163156.note(ru-ru,VS.100).gifПримечание
    Столбец или набор столбцов, определяющие ключ сущности, должны уникальным образом определять строку представления.

  3. Добавление определяющего запроса к модели. Дополнительные сведения см. в разделе Как добавлять определяющий запрос (платформа Entity Framework).

См. также

Основные понятия

Общие сведения об EDMX-файле (платформа Entity Framework)