Entity Framework - Наследование таблиц на типы - Существующая база данных - PullRequest
1 голос
/ 19 февраля 2009

Я хочу реализовать наследование таблиц по типам с помощью Entity Framework для существующей базы данных.

База данных:

alt text

Наследование для ImageParagraphs работает отлично, но я не могу сделать наследование Table Per Type с LinkListParagraph из-за различных первичных ключей (ParagraphID; ParagraphID + LinkID):

Ошибка 1 Ошибка 3003. Проблема во фрагменте сопоставления, начиная со строки 113: все ключевые свойства (Paragraphs.ParagraphID) абзацев EntitySet должны быть сопоставлены со всеми ключевыми свойствами (LinkListParagraph.LinkID, LinkListParagraph.ParagraphID) таблицы LinkListParagraph , C: \ Users \ buc \ Documents \ Visual Studio 2008 \ Projects \ ParagraphTest \ ParagraphTest \ ParagraphModel.edmx 114 15 ParagraphTest

Есть ли возможность решить эту проблему без изменений в базе данных?

Я хочу сделать что-то вроде этого:

alt text

Ответы [ 2 ]

1 голос
/ 19 февраля 2009

Один из способов - лгать Entity Framework о первичном ключе. Это потребует перехода в отображение магазина в EDMX и изменения флагов первичного ключа. Однако поймите, что если вы сделаете это, мастер обновления модели из базы данных попытается «исправить» ваше сопоставление при каждом обновлении.

Другим способом было бы создать представление в вашей базе данных и сопоставить представление вместо таблицы.

0 голосов
/ 22 февраля 2010

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

<EntityType Name="GSKItemDetails">
          <Key>
            <PropertyRef Name="ItemId" />
            <!--<PropertyRef Name="Description" />
            <PropertyRef Name="NDCNumber" />-->
          </Key>
          <Property Name="ItemId" Type="varchar" Nullable="false" MaxLength="47" />
          <Property Name="Description" Type="varchar" Nullable="false" MaxLength="30" />
          <Property Name="NDCNumber" Type="varchar" Nullable="false" MaxLength="16" />
          <Property Name="UnitPrice" Type="decimal" Precision="19" Scale="4" /> 
        </EntityType>

В моем случае, комментируя ненужные PropertyRefs, как упомянуто выше, была решена проблема выдачи ошибки: Ошибка 3003.

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