假设我有多对多关系的产品和收据。有什么方法可以直接查询product.receipts或receipt.products并获取Iqueryable而无需引用join_table?
我假设您正在使用 Linq-to-SQL。
答案是“不,但是……”
您可以在Linq-to-SQL中处理多对多关系,但是您确实需要有一个单独的类型来表示联结表。
如果您只想例如针对模型对象的子属性进行数据绑定,您可以执行一些非常简单的操作,例如:-
public partial class Order
{
public IEnumerable<Product> Products
{
get { return Order_Details.Select(x => x.Product); }
}
}
请注意 select-n-plus-one 问题,但如果您想在使用订单列表时随时使用它。
此外,还有一大堆重复的问题:-
Linq to Entities 和实体框架支持多对多关系。我知道 Linq to Sql 不支持,并且我认为(不确定)Linq to NHibernate 确实支持多对多。 (我知道NHibernate支持多对多)