0

Entity Framework を使用して C# で Web サービスを作成し、データを取得しています。

2 つの関連テーブル (Person、Role) があります。

各個人には役割が関連付けられています。

返されたオブジェクトが Person であり、関連付けられた Role が含まれていることを望みます。

次のようなクエリを実行すると:

From p in ef.Person.Include("Role") select p

デバッグでは、各 Person の Role オブジェクトが読み込まれていることがわかります。

しかし、返された/生成された XML には、関連するオブジェクトに関する情報を提供する RoleReference のみが含まれていますが、オブジェクト自体は含まれていません。

エンティティ フレームワークによって生成されたクラスに Serializable 属性を追加し、webmethod に xmlInclude 属性を追加しようとしましたが、何も変わりません。

どうすればこの問題を解決できますか?

ありがとう!

フラビオ

4

3 に答える 3

1

IEnumerable を渡していますか? .ToList() を試して、遅延読み込みを停止し、代わりにそれを渡します。

于 2013-07-03T17:22:37.827 に答える
0

Role のネストされたオブジェクト、または Role に必要なプロパティを含む Person という名前の Partial クラスを使用します。

于 2015-07-09T14:54:01.080 に答える
0

独自のクラス Person & Role を作成し、それらのマッパーを作成します。

public class MyPerson
{
   [DataMember]
   public int ID {get; set;}
   [DataMember]
   public string Name {get; set;}
   ...
   [DataMember]
   public MyRole PersonRole {get; set;}
}

public class MyRole
{
   [DataMember]
   public int ID {get; set;}
   ...
}

マッパー:

MyRole Mapper(EFRole role)
{
   return new MyRole() {
       id = role.id, ...
   }
}

MyPerson Mapper(EFPerson person)
{
     return new MyPerson() {
         id = person.id, 
         ....
         PersonRole = (person.Role != null ? Mapper(person.Role) : null;
     }
}
于 2013-07-03T14:27:09.060 に答える