3

http://msdn.microsoft.com/en-us/data/jj691402.aspxの「コードを使用した複数の結果セットへのアクセス」で説明されているように、Entity Frameworkを使用して、ストアドプロシージャを呼び出しています。

ストアドプロシージャを実行した後、ObjectContext.Translateメソッドを使用して、結果をデータコントラクトオブジェクトに取得しています。これには、データコントラクトのプロパティが返されたデータと一致している必要があります。

異なるプロパティ名を使用しながら、Translateメソッドでそれらを正しくマップする方法はありますか?

たとえば、国のリストを取得するためのプロシージャがあります。これは、listID、listNameの列を返します。これらの名前の代わりに、データコントラクトオブジェクトにIDと名前だけを持たせたいと思います。

DataMember属性にNameパラメーターを追加しようとしましたが、機能しませんでした。

[DataMember(Name="listID")]
public string ID { get; set;}
4

1 に答える 1

1

いいえ、この方法ではできません。Translate は、リーダー内のデータセットを反復処理し、渡したエンティティで定義されたプロパティに直接マップします。データ メンバーの注釈については認識しません。データ アノテーションはシリアル化に使用されるため、データ レイヤーが知る必要がないため、これは理にかなっています。

呼び出しているクエリに直接マップするプロパティを持つエンティティで Translate を呼び出すことをお勧めします。次に、シリアル化のために変換される名前を DataMember に定義させます。たとえば、クエリが listID と listName を返す場合:

[DataMember("ID")]
public string listID { get; set; }

[DataMember("Name")]
public string listName { get; set; }
于 2013-04-03T14:15:44.483 に答える