WCF Ria Services и циклические ссылки
Я использую устаревшую базу данных, которая имеет некоторые циклические ссылки. Когда я использую сервис 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 ответа
Теперь я лучше понимаю службы 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]...