我有一个Cars表,一个BodyPaints表和一个Cars_BodyPaints关联表,用于定义各种车辆可能的油漆作业。汽车和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);
我离开基地吗?你会如何做到这一点?
由于
答案 0 :(得分:1)
在使用属性建立多对多关系时,您需要将关系建模为实体本身。您将为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()