EF LINQ查询 - 多对多

时间:2011-08-07 18:40:24

标签: asp.net-mvc-3 entity-framework-4

我需要一些帮助从EF 4.1查询中获取一些数据。

我有一个Products表和一个Categories表,它们具有多对多关系。

我需要按ID选择产品,并在其中包含与之关联的类别。

我想出了这个:

    Public Function GetProductByID(ID As Integer) As Core.Entities.Product Implements Core.Interfaces.IProductService.GetProductByID
        Dim p = ProductRepository.Query.Single(Function(x) x.ID = ID)
        p.Categories = CategoryRepository.Query.Where(Function(x) x.Products.Any(Function(y) y.ID = ID)).ToList

        Return p

    End Function

我相信有更好的方法!

1 个答案:

答案 0 :(得分:2)

如果您的Include()实体上有Categories个媒体资源,为什么不使用Product? (C#语法):

var p = ProductRepository.Include(x=> x.Categories)
                         .Single(x => x.ID == ID);

另见Loading Related Objects