2011-08-16 50 views
2

我有一個linq查詢問題。 我的模特;在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屬性爲空。

在此先感謝。

回答

1

您的Product屬性被標記爲虛擬,因此將使用延遲加載。如果你希望它是在初始查詢填充你可以使用Include(o => o.Product)(你已經在使用包括關於ProductProductShowcases屬性。)

+1

是的,但問題是產品對象是productShowcase.ProductProductShowcases收集空。所以我需要包含ProductProductShwcase.Product,但我無法弄清楚如何。 – berdem

+1

對這種情況沒有任何答案?奇怪的 -。- – berdem