#entity-framework
#entity-framework
Вопрос:
У меня есть модель данных следующим образом:
У клиента есть продукты и способы оплаты. Каждому продукту может быть назначен любой или все способы оплаты Клиента, один из которых установлен по умолчанию.
Внешние ключи являются:
Customer.CustomerId => Product.CustomerId
Customer.CustomerId => PaymentMethod.CustomerId
Product.ProductId => ProductPaymentMethod.ProductId
PaymentMethod.PaymentMethodId => ProductPaymentMethod.PaymentMethodId
Я хочу настроить эту модель для целей презентации, чтобы у клиента была коллекция способов оплаты и коллекция продуктов. Продукты должны иметь коллекцию PRODUCTPAYMENTMETHOD, которые наследуются от PaymentMethod.
Я удалил связь между PaymentMethod и ProductPaymentMethod, добавил наследование от PaymentMethod к ProductPaymentMethod и удалил PaymentMethod ID из ProductPaymentMethod.
Теперь это моя модель:
Когда я сохраняю модель или создаю проект, я получаю 2 ошибки:
Ошибка 3002: Проблема с отображением фрагментов, начиная со строки 226: Потенциальное нарушение во время выполнения ключей table ProductPaymentMethod (ProductPaymentMethod.PRODUCTPAYMENTMETHOD id): Столбцы (ProductPaymentMethod.PRODUCTPAYMENTMETHOD id) сопоставляются со свойствами EntitySet PaymentMethods (PaymentMethods.PRODUCTPAYMENTMETHOD id) на концептуальной стороне, но они не формируют ключевые свойства EntitySet (PaymentMethods.Метод оплаты).
и
Ошибка 3003: Проблема с отображением фрагментов, начиная со строки 226: все ключевые свойства (PaymentMethods.PaymentMethod Id) из EntitySet Методы оплаты должны быть сопоставлены со всеми ключевыми свойствами (ProductPaymentMethod.PRODUCTPAYMENTMETHOD id) таблицы ProductPaymentMethod.
Что я делаю не так?
РЕДАКТИРОВАТЬ: После дальнейшего поиска в Google я нашел несколько решений, большинство из которых не совсем соответствуют этому сценарию. Большинство говорят о наследовании, требующем отношения 1-1, а не 1-много. Однако из-за отношения «Клиент-продукт 1-многие» модель требует соотношения «1-многие» между PaymentMethod и ProfilePaymentMethod. Невозможно ли сделать то, что я пытаюсь?
Комментарии:
1. Ссылки или краткое изложение ближайших решений, которые вы нашли, было бы неплохо.
Ответ №1:
Пока мой единственный ответ на это — иметь несколько созданных вручную классов POCO для представления и класс Mapper, чтобы превратить мой объект данных в объект представления