0

RIA サービス SP2 および Entity Framework 5 (既存の DB から生成) を使用していますが、エンティティ オブジェクトを別のエンティティ オブジェクトへの参照と共に渡すと、参照されたオブジェクトが取得されません。エンティティ フレームワーク側で .Include を実行し、参照されるエンティティに "Include" 属性を追加しています。私のクラスは次のようになります。

[MetadataTypeAttribute(typeof(ProfileValue.ProfileValueMetadata))]
public partial class ProfileValue
{
    internal class ProfileValueMetadata
    {
        private ProfileValueMetadata()
        {
        }

        [Key]
        public int ValueID { get; set; }

        public int ItemID { get; set; }

        [Include]
        [Composition]
        [Association("ProfileValue_ProfileItem", "ItemID", "ItemID")]
        public virtual ProfileItem ProfileItem { get; set; }

        public string Value { get; set; }
    }
}

と:

[MetadataTypeAttribute(typeof(ProfileItem.ProfileItemMetadata))]
public partial class ProfileItem
{

    internal class ProfileItemMetadata
    {
        private ProfileItemMetadata()
        {
        }
        public string Description { get; set; }

        [Key]
        public int ItemID { get; set; }

        [Include]
        public ICollection<ProfileValue> ProfileValues { get; set; }

        public string Type { get; set; }
    }
}

また、ProfileItem と Profile Value の両方に、それぞれのエンティティをクライアントに公開する CRUD メソッドがあります。とりあえず、プロファイル値のクエリを取得して、それぞれの ProfileItem をクライアントに提供しようとしています。db.ProfileValues.Include("ProfileItem") を呼び出して ToList を実行すると、両方のエンティティが得られます。RIA がどこかでそれらを含めることに失敗しているようです。

私は見てきました:

POCO エンティティ ベースの RIA サービスは、関連付けられたエンティティを逆シリアル化できません

ria サービスで関連付けられたエンティティを公開する

また、ここで参照されているものすべて: Include() in EF4 using RIA Services Domain Service not loading!

現在の技術:

Silverlight 5、Entity Framework 5 (ObjectContext ではなく DbContext)、および Ria Services SP2

どんなアイデアでも大歓迎です!

編集 RIA サービス呼び出しは次のとおりです。

    [Query(IsDefault = true)]
    public IQueryable<ProfileValue> GetProfileValues()
    {
        return db.ProfileValues.Include("ProfileItem");
    }
4

1 に答える 1

0

その答えは、メタデータ クラスを、メタデータを提供するクラスと同じ名前空間に移動する必要があるということでした。私の場合、「DataAccess.EntityModels.MetaData」から ProfileValue エンティティが存在する「DataAccess.EntityModels」に変更する必要がありました。この問題はエラーをスローせず、参照されたエンティティのシリアル化に失敗した理由に関する情報も提供しませんでした。何時間もの無駄な時間... :P

于 2013-07-19T20:33:48.523 に答える