【发布时间】:2013-02-01 16:39:13
【问题描述】:
场景:
如here 所述,一旦您将其他属性添加到简单的连接表(多对多关系),它就不再是隐藏关联。这些问题也解决了这个问题:
- Many-to-Many relationship in Entity Framework with relationship informantion
- How can I add properties to an association (relationship) using the Entity Framework
现有代码已经使用了简单的、自动隐藏的导航属性,并且对自动生成的表进行了一些小的自定义,因此我希望在更改基础关系表时避免重构整个项目。
问题:
有没有办法让自动导航(多对多)访问器都可以保留,但我也可以直接访问关系实体?
我可以编写自己的访问器,从关系表中选择,但它们不再是 EntityCollections,因此我担心我会失去跟踪等引擎盖下发生的任何魔法。
我可以手动将EntityCollections 添加到实体吗?
期望:
原文:Product* <-> *Offer
- 一个产品有很多优惠(比如 50% 的折扣,BOGO)
- 同样的优惠可以适用于许多产品(“红衬衫”和“蓝裤子”是 BOGO)
所需:Product* <-[sort]-> *Offer
- 当我列出产品的报价时,我可以单独对它们进行排序
- 即“Red Shirt”先是“50% off”,然后是“BOGO”,但“Blue Pants”先是“BOGO”,然后是“50% off”
那么我希望能够做到:
// original access, do stuff
List<Offer> applicableOffers = currentProduct.Offers.Where(...);
// hit up the join table directly for properties
var applicableOffersInOrder = applicableOffers.OrderBy(o => o.ProductOffers.Sort);
而不是
var applicableOffersInOrder = currentProduct.ProductOffers
.OrderBy(o => o.Sort)
.Offers.Where(...);
【问题讨论】:
-
hm...由于我只关心一个方向的排序,我想知道我是否可以像@ladislav 在这里所做的那样在模型设计器中创建多个一对多关联:stackoverflow.com/questions/9043453/…
标签: c# asp.net entity-framework ef-model-first