RIA DomainService не генерирует клиентский код с использованием DataContracts - PullRequest
2 голосов
/ 21 сентября 2010

Я работаю над приложением 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 Ответ

3 голосов
/ 22 сентября 2010

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 из серверной службы.

...