2013-06-27 64 views
3

我使用Silverlight 4 RIA Services和我有如下因素問題合併:包含的對象與先前請求

我有一個父實體,讓通話MyParent,和一個孩子實體,稱爲MyChild。父實體的元數據類如下:

internal sealed class MyParentMetadata 
{ 
    [Include] 
    [Composition] 
    public EntityCollection<MyChild> Childs { get; set; } 
    (...) 

時進行查詢,以主人的實體,包括我的孩子實體:

public IQueryable<MyParent> GetParentByID(int id) 
{ 
    return this.ObjectContext.MyParent.Include("Childs").Where(x => x.ID == id); 
} 

在客戶端中,使用此代碼做出請求:

context.Load<MyParent> (context.GetParentByID(id), LoadBehavior.RefreshCurrent, 
    lo => { 
     var return = lo.Entities; 
    }); 

第一次發出請求,它可以處理罰款。可以說,我做了父對象1的請求,並得到這樣的結果:

=> Parent 1 
    => Child 1.1 
    => Child 1.2 

但是,當我做了diferent對象的第二請求,從出現第一個對象的孩子的被合併成第二個結果。我得到這個:

=> Parent 2 
    => Child 1.1 
    => Child 2.1 
    => Child 1.2 
    => Child 2.2 

我怎樣才能確保'家長2'對象只有自己的孩子? LoadBehavior.RefreshCurrent參數似乎只適用於父對象,但不適用於子對象。

回答

0

我以前從未需要LoadBehavior.RefreshCurrent。你是對的,它似乎不適用於包含實體。

如果我是你,我喜歡這種方式的負載

    • 結算上下文對象一個獲取上下文的一個新實例(我知道這似乎並不好,但解決這個問題,我們需要這種情況下加載相同類型的實體,但爲了不同的目的)。