RIA DomainService не генерирует клиентский код с использованием DataContracts
Я работаю над приложением Silverlight 4.0 и использую сервисы RIA. Я создал класс на стороне сервера, к которому применены атрибуты DataContract и DataMember.
DomainService представляет этот класс в качестве результата запроса и, как таковой, генерирует для него код на клиенте. Но почему-то он не генерирует код для всех свойств класса. Примитивные свойства типа guid, string, int, bool и т. Д. Генерируются просто отлично, но если у меня есть свойство моего собственного сложного типа, это свойство не создается на клиенте.
Вот этот класс:
[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; }
}
Оба класса находятся в одном пространстве имен.
Вопрос: почему свойство SummaryGroup объекта SummaryDataSet не создано на клиенте и что я должен сделать, чтобы это исправить?
1 ответ
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 из серверной службы.