Определить составной первичный ключ в Entity Framework - PullRequest
0 голосов
/ 09 марта 2012

У меня есть таблица, для которой не определен первичный ключ. При добавлении этого в мою DataModel инструмент генерирует следующее сообщение:

Ошибки, обнаруженные во время генерации:
предупреждение 6013: таблица / вид Для CHARGE_DETAILS не определен первичный ключ и никакой действительный первичный ключ не может быть выведен. Эта таблица / представление было не входит. Чтобы использовать сущность, вам нужно будет пересмотреть свою схему, добавить правильные ключи и раскомментируйте их.

Я не могу изменить таблицу каким-либо образом - однако я считаю, что мог бы составить составной ключ из двух столбцов для удовлетворения этих требований.

Однако представляется , что в элементе EntityType Key может содержаться только ноль или один элементов.

Так как бы я дал EF указание рассматривать два столбца как ключ?

Ответы [ 2 ]

1 голос
/ 28 апреля 2015

У меня была та же проблема сегодня, я быстро и грязно сделал, чтобы она заработала.Я только что закомментировал определяющий запрос в файле .edmx для данной сущности.

«Оригинал»:

<EntitySet Name="CODES" EntityType="Self.CODES" store:Type="Tables" store:Schema="PIZZA">
  <DefiningQuery>
   SELECT 
    "CODES"."LINE" AS "LINE", 
    "CODES"."TEXT" AS "TEXT", 
    "CODES"."MODULE" AS "MODULE", 
    "CODES"."DEFAULT" AS "DEFAULT"
  </DefiningQuery>
</EntitySet>

После изменения:

<EntitySet Name="CODES" EntityType="Self.CODES" store:Type="Tables" store:Schema="PIZZA">
  <!--<DefiningQuery>
   SELECT 
    "CODES"."LINE" AS "LINE", 
    "CODES"."TEXT" AS "TEXT",
    "CODES"."MODULE" AS "MODULE", 
    "CODES"."DEFAULT" AS "DEFAULT"
  </DefiningQuery>-->
</EntitySet>

В моем случае это сработало, но я предполагаю, что оно работает не во всех случаях.Я использую LINE и MODULE в качестве составного ключа.Я не делаю ничего необычного с этой таблицей, просто необработанные вставки, так что это работает.

1 голос
/ 09 марта 2012

Вы можете создать составной первичный ключ на стороне базы данных. Вы используете ODP.Net? Он автоматически отобразит вашу базу данных pk.

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