Serialization RIA DomainService未使用DataContracts生成客户端代码
我正在开发Silverlight 4.0应用程序,正在使用RIA服务。我在服务器端创建了一个类,该类应用了DataContract和DataMember属性 DomainService将此类作为查询结果公开,并在客户端上为其生成代码。但它并没有为类的所有属性生成代码。guid、string、int、bool等类型的基本属性生成得很好,但如果我有自己复杂类型的属性,则不会在客户端上创建该属性 这是一节有问题的课:Serialization RIA DomainService未使用DataContracts生成客户端代码,serialization,ria,datacontracts,Serialization,Ria,Datacontracts,我正在开发Silverlight 4.0应用程序,正在使用RIA服务。我在服务器端创建了一个类,该类应用了DataContract和DataMember属性 DomainService将此类作为查询结果公开,并在客户端上为其生成代码。但它并没有为类的所有属性生成代码。guid、string、int、bool等类型的基本属性生成得很好,但如果我有自己复杂类型的属性,则不会在客户端上创建该属性 这是一节有问题的课: [DataContract] [KnownType(typeof(S
[DataContract]
[KnownType(typeof(SummaryGroup))]
public class SummaryDataSet
{
public SummaryDataSet()
{
}
[KeyAttribute]
[DataMember]
public Guid Guid { get; set; }
[DataMember]
public SummaryGroup SummaryGroup { get; set; }
}
Guid属性在客户端上创建得很好。未在客户端上创建SummaryGroup属性。下面是SummaryGroup的代码:
[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; }
}
这两个类位于同一命名空间中
问题:为什么没有在客户端上创建SummaryDataSet的SummaryGroup属性?我应该怎么做才能解决这个问题?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提供了从SummaryDataSet连接到SummaryGroup的信息
这假设您可以从服务器端服务请求SummaryDataSet和SummaryGroup。是的,使用关联确实是一种方法-我现在有事情要做了。相关问题:以前从未听说过术语DTO(数据传输对象),SummaryDataSet会是其中之一吗?我认为这类问题取决于您的观点。这里定义了DTO模式。我认为SummaryDataSet是WCF RIA采用DTO的一个例子。在我的RIA项目中,我经常在这些类型的对象周围有一个包装器,以使它们更适合我的MVVM方法。希望这有帮助。