1

いくつかの循環参照があるレガシーデータベースを使用しています。SL4クライアントからRiaサービスを利用する場合。(ORMマッパーを介して生成されたエンティティ)次のエラーが発生します:

パラメータhttp://tempuri.org/:GetPublicationPagesResultをシリアル化しようとしたときにエラーが発生しました。InnerExceptionメッセージは「タイプ」xxx.Entities.TblPublicationPageのオブジェクトグラフにサイクルが含まれており、参照追跡が無効になっている場合はシリアル化できません。

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

CyclicReferencesAware属性またはIsRefence=trueを使用してプレーンWCFに対して有効にする方法を知っています。しかし、WCFRiaServicesでこれを行う方法がわかりません。

4

2 に答える 2

0

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] 属性で装飾する必要があることです...

于 2011-07-02T15:32:02.810 に答える
0

[CyclicReferencesAware(true)] を使用

于 2011-10-13T16:33:57.113 に答える