RIA域服务未使用数据合同生成客户端代码
-
04-10-2019 - |
题
我正在开发Silverlight 4.0应用程序,并且正在使用RIA服务。我在服务器端创建了一个类,该类应用于数据合同和DataMember属性。
域服务将此类公开为查询结果,因此,在客户端上为其生成代码。但是某种程度上,它不会为类的所有属性生成代码。类型GUID,字符串,INT,BOOL等的原始属性可以生成,但是如果我拥有自己的复杂类型的属性,则该属性不会在客户端上创建。
这是所讨论的课程:
[DataContract]
[KnownType(typeof(SummaryGroup))]
public class SummaryDataSet
{
public SummaryDataSet()
{
}
[KeyAttribute]
[DataMember]
public Guid Guid { get; set; }
[DataMember]
public SummaryGroup SummaryGroup { get; set; }
}
指南属性是在客户端上创建的。摘要组属性不是在客户端上创建的。这是摘要组的代码:
[DataContract]
public class SummaryGroup
{
public SummaryGroup()
{
}
[KeyAttribute]
[DataMember]
public Guid Guid { get; set; }
[DataMember]
public string Name { get; set; }
[DataMember]
public int Sequence { get; set; }
}
这两个类都处于相同的名称空间。
问题:为什么不是在客户端创建的摘要属性的摘要组属性,我该怎么办?
解决方案
WCF RIA无法处理复杂的类型,但是您可以尝试以下操作:
[DataContract]
[KnownType(typeof(SummaryDataSet))]
public class SummaryDataSet
{
public SummaryDataSet()
{ }
[KeyAttribute]
[DataMember]
public Guid Guid { get; set; }
[DataMember]
[Association("SummarySet_SummaryGrp_FK", "Guid", "Guid")]
public SummaryGroup SummaryGroup { get; set; }
}
这为RIA提供了从摘要数据集连接到摘要组的信息。
这假设您可以从Siserveride Service请求摘要DataSet和SummaryGroup。
不隶属于 StackOverflow