Ria Domainservice не генерирует код клиента с использованием DataconTracts
-
04-10-2019 - |
Вопрос
Я работаю над приложением Silverlight 4.0 и использую RIA Services. Я создал класс на стороне сервера, которая применяется к нему атрибуты DataContract и DataMember.
Доменовоеврос предоставляет этот класс в качестве результата запроса и как таковой, генерирует код для него на клиенте. Но каким-то образом он не генерирует код для всех свойств класса. Примитивные свойства типа GUID, String, INT, BOOL ETC создаются просто штрафом, но если у меня есть свойство моего собственного сложного типа, что свойство не создается на клиенте.
Вот рассматриваемый класс:
[DataContract]
[KnownType(typeof(SummaryGroup))]
public class SummaryDataSet
{
public SummaryDataSet()
{
}
[KeyAttribute]
[DataMember]
public Guid Guid { get; set; }
[DataMember]
public SummaryGroup SummaryGroup { get; set; }
}
Имущество GUID создается на клиенте просто отлично. Свойство SummaryGrup не создается на клиенте. Вот код для суммы группы:
[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, созданного на клиенте и что я должен сделать, чтобы это исправить?
Решение
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; }
}
Это дает РИА информацию для подключения от суммированногоDataSet к суммой группе.
Это предполагает, что вы можете запросить как суммированиеDataset, так и суммарную группу из сервесовой службы.