他の質問を確認しましたが、これでうまくいくと思います:
private static List<Duck> GetDucks(this DataServiceContext ctx, params int[] ids)
{
return ctx.CreateQuery<Duck>("Ducks").Where(x => ids.Contains(x.DuckID)).ToList();
}
NotSupportedException: The method 'Contains' is not supported. が発生しました。
クエリを次のように変更しました
Where(x => ids.Any(id => id == x.DuckID)
メッセージを受け取りました: MaxProtocolVersion が '3.0 '未満の場合、メソッド 'Any' はサポートされていません
次に、別の方法で DataServiceContext を構築しました。
public static DataServiceContext Context
{
get { return new DataServiceContext(baseUri, DataServiceProtocolVersion.V3); }
}
その後、次のメッセージを受け取りました: NotSupportedException: 'Any' メソッドのソース パラメータは、ナビゲーション プロパティまたはコレクション プロパティのいずれかである必要があります
先に進む前に、アドバイスをいただければと思います。
編集
クライアント側とサーバー側の両方で MaxProtocolVersion 3 を使用しました。
いずれにせよ、データのサブセットを返そうとしないので、この特定のエラー メッセージは今のところ消えています。作業する前にエンティティの完全なリストを取得するだけです (ただし、これにはさらに検討/最適化が必要です)。空の一時 DataServiceContext がある場合、更新したいエンティティを取得してから保存する必要があると誤って信じていました (私が見つけた更新の実行に関するさまざまな例の影響を受けています)。もちろん、メソッドAttachTo(EntitySetName, entity)が正しい解決策です。次に、 TempContext.SaveChanges()の前にUpdateObject(entity)を呼び出すことができます。