エンティティのコレクションを.NET RIAデータサービスに渡す方法
-
22-07-2019 - |
質問
オブジェクトのコレクションをRIA Data Serviceクエリに渡すことは可能ですか?エンティティ、Int、またはプリミティブ型の配列を送信しても問題はありませんが、このようなメソッドを宣言するとすぐに
public void GetLessonsConflicts(Lesson[] lessons)
{
}
iコンパイルエラーが表示されます
"名前が付けられた操作 「GetLessonsConflicts」が準拠していません 必要な署名に。パラメータ タイプはエンティティタイプまたは次のいずれかでなければなりません 事前定義されたシリアライズ可能 タイプ"
データを保存する前に、サーバー側で検証を試みています。 List、IEnumerableなどを試しました。
ありがとう
解決
問題は、実際には戻り値がないことだと思います。私が理解しているように、慣例または属性によってDomainOperationsを識別できます。属性を表示していないので、RIAは慣例により一致させようとします。
たとえば、慣例により、挿入メソッドは次のことを行う必要があります。
- メソッド名の接頭辞としてInsert、Add、またはCreateがあります。 InsertEmployee
- 署名と一致public void name(Entity e);
クエリメソッドは次の条件を満たしている必要があります:
- 公開する
- IEnumerable、IQueryable、またはT(Tはエンティティ)を返します。
カスタムドメイン操作が必要
- 公開する
- return void
- 最初のパラメーターとしてエンティティーがあります。
編集:以下のRami Aのコメントを参照してください。当時はこれが真実だったと思いますが、現在このテクノロジーを使用しているわけではないので、間違っている可能性があることに注意する以外にこの答えを更新するほど最新ではありません。
または、[挿入]、[削除]、[更新]、[クエリ]、[カスタム]などの属性を使用できます。私のドキュメントから、すべての属性は名前の規則の要件を削除するだけです。[クエリ]属性と[カスタム]属性が何を達成するかは明確ではありません。
DomainOperationsと同様に、ServiceOperations([ServiceOperation]属性を使用)およびInvokeOperationsを定義できます。
この記事が役立つ場合があります(少しは思いますが)古い)。