在Linq中选择多对多关系中的数据

时间:2011-08-16 19:12:26

标签: linq poco

我有一个linq查询问题。 我的模特;

public class Product : Entity
{
    public virtual Brand Brand { get; set; }
    public virtual ICollection<Category> Categories { get; set; }
    //etc...

    public virtual ICollection<ProductProductShowcase> ProductProductShowcases { get; set;}    
}

public class ProductShowcase : ContextContainer<ProductShowcaseContext>
{
    public virtual ICollection<ProductProductShowcase> ProductProductShowcases { get; set; }
}

public class ProductProductShowcase : Entity
{
    public int ProductShowcaseId  { get; set; }

    public int ProductId  { get; set; }

    public virtual ProductShowcase ProductShowcase  { get; set; }

    public virtual Product Product  { get; set; }
}

我想选择具有相关产品ProductShowcase个实体。我试过了;

ProductShowcase productShowcase = RepositoryHelper.DataContext.ProductShowcases.Include(i => i.Contexts).Include(o => o.ProductProductShowcases).Where(o => o.Id == Id).SingleOrDefault();

在查询结果productShowcase.ProductProductShowcases中,ProductId属性具有预期值,但Product属性为null。

提前致谢。

1 个答案:

答案 0 :(得分:1)

您的Product属性被标记为虚拟,因此将使用延迟加载。如果您希望在初始查询中填充它,可以使用Include(o => o.Product)(您已在ProductProductShowcases属性上使用Include。)