WCF Ria Services и циклические ссылки - PullRequest
1 голос
/ 02 июля 2011

Я использую устаревшую базу данных, которая имеет несколько циклических ссылок. Когда я использую сервис Ria с клиента SL4. (сгенерированные сущности через мой ORM маппер) Я получаю следующую ошибку:

Произошла ошибка при попытке сериализации параметра http://tempuri.org/:GetPublicationPagesResult. Сообщение InnerException было «Граф объекта для типа« xxx.Entities.TblPublicationPage »содержит циклы и не может быть сериализовано, если отслеживание ссылок отключено.

[Query]
public IQueryable<TblPublicationPage> GetPublicationPages(int publicationId)
{
    return this.PublicationLogic.Value.GetPublicationPages(publicationId);
}

Я знаю, как включить его для простого WCF через атрибут CyclicReferencesAware или IsRefence = true. Но я не могу понять, как это сделать с помощью WCF Ria Services.

Ответы [ 2 ]

0 голосов
/ 13 октября 2011

Использовать [CyclicReferencesAware (true)]

0 голосов
/ 02 июля 2011

Теперь я лучше понимаю службы WCF Ria, я просто попытался исправить это, как если бы я делал это в обычном WCF, и добавил метаданные в свои сгенерированные сущности:

[DataContract(IsReference = true)]
[DataServiceKey("PublicationPageID")]
[DebuggerDisplay("PublicationPageID: {PublicationPageID}")]
[MetadataType(typeof(TblPublicationPageMetadata))]
public partial class TblPublicationPage
{
    internal sealed class TblPublicationPageMetadata
    {
        [DataMember]
        public int PublicationPageID { get; set; }
    }
}

Единственным недостатком на данный момент является то, что мне приходится украшать каждое свойство в классе метаданных атрибутом [DataMember] ...

...