[英]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; }
...到MySubType,以及屬性:
[Association("SubType_FK", "Id", "ComplexTypeId")]
...到MyComplexType中的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.