1

Silverlight5 / RIA サービス アプリケーション内で、非常に単純なデータベース上にドメイン サービスを構築しました。

予約 n:1 機器 1:n GroupToEquipment n:1 グループ

自動生成された edmx では、GroupToEquipment エンティティは表示されず、Equipment から Group への直接の関連付けが表示されます。ここまでは順調ですね。

機器から DomainService 内の 1:n に関連付けられた予約への参照を取得するには、「DomainService.metadata.cs」内に [Include] と [Association...] を挿入する必要がありました。

[Include]
[Association("FK_Booking_Equipment", "EquipmentId","EquipmentId")]
public EntityCollection<Booking> Booking { get; set; }

「DomainService.cs」内に .Include("Booking") を追加しました

public IQueryable<Equipment> GetEquipment()
{
   return this.ObjectContext.Equipment.Include("Booking");
}

これは完璧に機能し、機器のクエリ時にすべての予約への参照が読み込まれます! しかし、n:m Group-association にこれをどのように採用する必要がありますか??

次のコードは、「DomainService.metadata.cs」内でさらに試したものです。

    internal sealed class EquipmentMetadata
    {

        // Metadata classes are not meant to be instantiated.
        private EquipmentMetadata()
        {
        }

        [Include]
        [Association("FK_Booking_Equipment", "EquipmentId","EquipmentId")]
        public EntityCollection<Booking> Booking { get; set; }

        public Guid EquipmentId { get; set; }

        [Include]
        [Association("GroupToEquipment", "EquipmentId", "GroupId")]
        public EntityCollection<Group> Group { get; set; }

        public string Name { get; set; }
    }
}

これはDomainServiceで:

    public IQueryable<Equipment> GetEquipment()
    {
        return this.ObjectContext.Equipment.Include("Booking").Include("Group");
    }

コードは正常にコンパイルされますが、機器を照会した後、グループへの参照はありません.... :-(

私は何を間違っていますか?確かに、これは知っている人にとっては小さな問題にすぎません...

よろしく、フロー。

4

1 に答える 1

0

申し訳ありませんが、WCF Ria は m:n 関係をサポートしていません! 詳細については、このNikhil kotary の回答を参照してください。

m:n クラスを作成し、関係を手動で処理することをお勧めします。つまり、GroupToEquipment エンティティを db から edmx に、および edmx から WCF Ria に公開する必要があります。

このオプションに耐えられず、他のコードへの依存関係を追加したい場合は、m2mria on codeplexを見てください。本当に基本的なシナリオで試してみましたが、うまくいきました

これが役に立てば幸いです、
マルコ

于 2012-09-25T05:29:18.350 に答える