Как предоставить дополнительные данные столбца для каждой пары в отношениях «многие ко многим»? - PullRequest
1 голос
/ 06 марта 2011

У меня есть таблица Cars, таблица BodyPaints и таблица ассоциации Cars_BodyPaints, которая определяет, какие задания покраски возможны для различных автомобилей. Ассоциация между Cars и BodyPaints является многим для многих.

Я хотел бы создать дополнительный фрагмент данных для каждого сопоставления (Car, Paint), чтобы определить стоимость конкретной работы по окраске на конкретном автомобиле. Я добавил дополнительный столбец в Cars_BodyPaints, чтобы записать цену каждой пары, но когда я обновляю классы модели из БД, я не вижу ее в каком-либо из классов сущностей. Это заставляет меня верить, что, возможно, мой подход здесь неправильный. Я исключил какой-то метод для генерации, чтобы я мог выполнить код, подобный:

Car civic = (from c in context.Cars  where c.Name == "Civic" select c).Single();
Paint red = (from p in civic.Paints  where p.Name == "Red"   select p).Single();

var price = civic.GetPrice(red);

Я здесь с базы? Как бы вы достигли этого?

Спасибо

1 Ответ

1 голос
/ 06 марта 2011

При моделировании отношений «многие ко многим» с атрибутами вам нужно будет смоделировать отношение как саму сущность.Вы должны создать новый объект для таблицы Cars_BodyPaints, и он будет содержать дополнительный столбец цены в качестве свойства.Эта новая промежуточная сущность должна быть пройдена при рассмотрении отношения между Cars и BodyPaints и может также запрашиваться напрямую.

Cars <-- Cars_BodyPaints --> BodyPaints

В этой новой модели ваш запрос будет выглядетьбольше похоже:

(from bp in context.CarBodyPaints
where bp.Car.Name = "Civic" and bp.Paint.Name = "Red"
select bp.Price).Single()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...