2012-06-13 60 views
4

Sample類結構預先加載包括派生類

class Order 
{ 
    public int Id { get; set; }  
    public DateTime Date { get; set; } 

    public List<OrderDetail> Details { get; set; } 
} 

class OrderDetail 
{ 
    public int Id { get; set; } 
    public int Qty { get; set; } 

    public Item Item { get; set; } 
} 

class Item 
{ 
    public int Id { get; set; } 
    public string Name { get; set; } 
} 

class ElectronicItem : Item 
{ 
    public MoreDetail Detail { get; set; } 
} 

class MoreDetail 
{ 
    public int Id { get; set; } 
    public string SomeData { get; set; } 
} 

的導航屬性爲了填充順序的對象與所有的導航屬性,我寫

context.Orders.Include("Details").Include("Details.Item") 

我還要加載瀏覽更詳細信息的對象,因此我試過

context.Orders.Include("Details").Include("Details.Item.Detail") 

它沒有工作。如何加載完整的Order對象?

回答

1

這是目前不可能的,但它是User DataVoice社區要求的功能,你已經找到了。在MS Connect也有相關的錯誤。

你根本就派生類型不急於負荷導航屬性,但你可以用單獨的查詢加載它們:

var moreDetails = context.MoreDetails; 

EF應自動修復您的導航性能。如果您在原始查詢中對訂單進行過濾,則必須在更詳細的查詢中應用該過濾器:

var moreDetails = cotnext.MoreDetials.Where(m => m.Item.Order ....);