Как мне справиться с отсутствием первичного ключа в Entity Framework? - PullRequest
2 голосов
/ 25 января 2012

В Entity Framework всякий раз, когда я «обновляю модель из базы данных» внутри Visual Studio, созданная модель не может использоваться.

Проблема в том, что EF не очень хорошо обрабатывает таблицы без первичного ключа. Он рассматривает их как представление, что, в свою очередь, не позволяет редактировать таблицу с помощью EF. Вы можете изменить это поведение, открыв модель (файл edmx) в виде файла XML и внеся несколько изменений в определение EntitySet. Это раздражает делать это снова и снова. Кто-нибудь нашел более постоянный обходной путь, кроме добавления первичного ключа или изменения файла edmx после каждого обновления?

Кстати, я использую уникальный ключ, но он распределен по двум столбцам. Было бы хорошо, если бы EF справился с этим, но с EF 4.2 это не так.

Ответы [ 2 ]

4 голосов
/ 25 января 2012

Я не понимаю - вы используете «уникальный ключ» (я полагаю, вы имеете в виду уникальный индекс или уникальное ограничение), потому что ключ имеет два столбца?Вы можете создать первичный ключ с несколькими столбцами.Я не уверен, почему EF рассматривал бы ключ с двумя столбцами иначе, чем первичный ключ с одним столбцом, но вот простой пример первичного ключа с несколькими столбцами:

CREATE TABLE dbo.foobar
(
    fooID INT,
    barID INT,
    PRIMARY KEY (fooID, barID)
);

Конечно, естьдругой синтаксис, который позволяет вам создать ограничение после факта, и вы также должны явно назвать свое ограничение, но просто хотели показать простой пример.

3 голосов
/ 25 января 2012

Кстати, я использую уникальный ключ, но он распределен по двум столбцам. Было бы неплохо, если бы EF справился с этим, но в EF 4.2 этого не произошло.

Да, это так ;)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...