Entity Framework Ошибка 3002/3003 - проблема наследования / сопоставления ключей - PullRequest
1 голос
/ 06 июня 2011

У меня есть следующая модель данных:

Data Model

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

Иностранные ключи:

Customer.CustomerId => Product.CustomerId
Customer.CustomerId => PaymentMethod.CustomerId
Product.ProductId => ProductPaymentMethod.ProductId
PaymentMethod.PaymentMethodId => ProductPaymentMethod.PaymentMethodId

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

Я удалил связь между PaymentMethod и ProductPaymentMethod, добавил наследование от PaymentMethod к ProductPaymentMethod и удалил PaymentMethodId из ProductPaymentMethod.

Теперь это моя модель:

Presentation Model

Когда я сохраняю модель или строю проект, я получаю 2 ошибки:

Ошибка 3002. Проблема при сопоставлении фрагментов, начинающихся со строки 226. Потенциальное нарушение среды выполнения ключей таблицы ProductPaymentMethod (ProductPaymentMethod.ProductPaymentMethodId): столбцы (ProductPaymentMethod.ProductPaymentMethodId) сопоставляются со свойствами EntitySet PaymentMethods PaymentMethods, которые используют в качестве метода оплаты.сформировать ключевые свойства EntitySet (PaymentMethods.PaymentMethodId).

и

Ошибка 3003: проблема в сопоставлении фрагментов, начиная со строки 226: все ключевые свойства (PaymentMethods.PaymentMethodId) методов оплаты EntitySet должны быть сопоставлены со всеми ключевыми свойствами (ProductPaymentMethod.ProductPaymentMethodId) таблицы ProductPaymentMethod.

Что я делаю неправильно?

РЕДАКТИРОВАТЬ: Сделав еще несколько Google, яи несколько решений, большинство из которых не совсем соответствуют этому сценарию.Большинство говорят о наследовании, требующем отношения 1-1, а не 1-много.Однако из-за связи между клиентом и продуктом 1-многие модели требуется 1-много между PaymentMethod и ProfilePaymentMethod.Разве нельзя делать то, что я пытаюсь?

1 Ответ

0 голосов
/ 07 июня 2011

Мой единственный ответ на этот вопрос пока состоит в том, чтобы иметь некоторые вручную созданные классы POCO для представления и класс Mapper, чтобы превратить мою сущность данных в сущность представления

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