簡體   English   中英

Silverlight 4 WCF RIA域服務的復雜類型

[英]Complex types with Silverlight 4 WCF RIA Domain Service

經過廣泛的Google搜索后,我仍然在此牆上砸頭。

我正在嘗試獲取域服務以將對象列表返回給客戶端。 我的對象是

[DataContract]
public class MyComplexType {
    [Key]
    [DataMember]
    public int Id { get; set; }
    [DataMember]
    public string SomeString { get; set; }
    [DataMember]
    public IEnumerable<MySubType> SubTypes { get; set; }
}

[DataContract]
public class MySubType {
    [Key]
    [DataMember]
    public int Id { get; set; }
    [DataMember]
    public string AnotherString { get; set; }
}

域服務具有以下內容

[Query]
[Invoke]
public IQueryable<MyComplexType> GetMyComplexTypes() {
    /* return stuff */
}

但是在客戶端MyComplexType對象沒有SubTypes屬性,我嘗試添加該屬性:

[DataMember]
public int ComplexTypeId { get; set; }

...到M​​ySubType,以及屬性:

[Association("SubType_FK", "Id", "ComplexTypeId")]

...到M​​yComplexType中的SubTypes屬性。

但是它仍然不會將SubTypes屬性推到客戶端。 我有另一個對象(相同的原理,但使用真實的代碼),其中SubTypes等效項在客戶端POCO上,但始終為空(無論從服務器返回什么)。

我覺得我在這里一定想念什么,這一定不難嗎? 任何幫助或解釋,或指向有用的資源,將不勝感激。

更新 :我發現如果我添加以下查詢到域服務:

    public IQueryable<MySubType> GetMySubTypes() {
        throw new NotImplementedException();
    }

我現在可以從客戶端訪問MyComplexType.SubType屬性,但是當我使用以下代碼對其進行測試時...

_Context.Load(_Context.GetMyComplexTypesQuery(),
            r => {
                myComplexTypes = r.Entities;
                var noCts = myComplexTypes.Count();
                foreach (var ct in myComplexTypes) {
                    var noSts = ct.SubTypes.Count();
                }
            }, null);

我調試了它,創建了兩個復雜類型(因此noCts為2),但是對於每次迭代,noSts為0,盡管我在服務器端添加了SubType。

有任何想法嗎?

您可能只需要添加[ComplexType]屬性:

using System.ComponentModel.DataAnnotations;

[ComplexType]
public class MyComplexType {
    public int Id { get; set; }
    public string SomeString { get; set; }
    public IEnumerable<MySubType> SubTypes { get; set; }
}

[ComplexType]
public class MySubType {
    public int Id { get; set; }
    public string AnotherString { get; set; }
}

[DataContract][DataMember]屬性是可選的。 它們由WCF RIA自動推斷。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM