2012-08-28 73 views
0

我試圖用RIA域服務工作,因爲如果它是一個WCF服務(這在技術上是)如何在RIA服務代理客戶協會工作的Silverlight

似乎是關鍵因素「失蹤」外從生成的代理客戶端。例如關聯的對象屬性。

爲了簡單起見這裏的兩個班的一個示例:

public class Person 
    { 
     [Key] 
     public int Id { get; set; } 

     public string FirstName { get; set; } 

     public string LastName { get; set; } 

     [Include] 
     [Association("Person_Hobbies", "Id", "Person_Id")] 
     [Composition] 
     public IEnumerable<Hobby> Hobbies { get; set; } 

    } 

    public class Hobby 
    { 
     [Key] 
     public int Id { get; set; } 

     public string Name { get; set; } 

     public int Person_Id { get; set; } 

    } 

,並在此域名服務,我們可以回到人民和他們的興趣愛好爲:

public IQueryable<Person> GetPeople() 
     { 
      var peopleList = new[] { 
       new Person { Id = 1, FirstName = "Fred", LastName = "Flintstone", Hobbies = new List<Hobby>() { new Hobby { Id = 1, Name="Reading", Person_Id=1 }, 
                                new Hobby { Id = 2, Name="Biking", Person_Id=1}, }}, 
       new Person { Id = 2, FirstName = "Barnie", LastName = "Rubble", Hobbies = new List<Hobby>() { new Hobby { Id = 3, Name="Skiing", Person_Id=2 }, 
                                new Hobby { Id = 4, Name="Rock Climbing", Person_Id=2} } }, 
       }; 

      return peopleList.AsQueryable<Person>(); 
     } 

我已經驗證了這個工程完全按照預期,在Silverlight和DomainService之間。

但是在控制檯應用程序中也引用了這個RIA域服務,生成的Person類沒有Hobbies屬性(就像它在Silverlight客戶端中一樣)。

確實,當我打電話給GetPeople時,我得到了RootResults(人)和IncludedResults(興趣),我可以將它們「結合」在一起。所以我可以生活沒有愛好屬性

困難在於準備ChangeSetEntry數組---我如何發送服務人和他們的業餘愛好從控制檯應用程序?在Silverlight中,我創建了一個新的Person,爲Hobbies屬性添加愛好,並將Person添加到DomainContext和SubmitChanges。在後臺RIA服務器(無論是在客戶端還是服務器上,我都不確定)將其排序。

我正在努力改變ChangeSetEntry對象數組中個人對業餘愛好的聯繫。

回答

2

據我所知這是預期的行爲。關聯屬性是代碼生成器在代理中生成的SL domaincontext的「魔力」。 您可以發送一個數組,其中包含1個changesetentry for個人和changesetentry每個人的愛好。 該數組中的索引很重要。你用它來跟蹤關聯。填充每個ChangeSetEntry的Associations屬性,這些屬性與此類關聯有關聯

Dictionary<string, int> personHobbyAss = new Dictionary<string, int>(); 
personHobbyAss.Add("Person_Hobbies", 1) 

其中1是關聯條目的索引。

我同意這不是直接的,而是非常有限的,但是......至少它是有效的。請注意,我從來沒有嘗試過像沒有「參考」Hobby.Person但只有Fk的協會。

相關問題