1

MVC アプリケーションで Entity Framework 5 を使用しています。一致のリストを保存し、実際の更新を行う前に、投稿されたすべての一致を EF メモリに読み込みたいと考えています。

次のコードがあります(動作します)。_context は私の EfDbContext です:

public bool UpdateMatches(IEnumerable<Match> matchesToUpdate, int userID)
{
    matchesToUpdate = matchesToUpdate as List<Match> ?? matchesToUpdate.ToList();
    var matchIDs = matchesToUpdate.Select(m => m.ID).ToArray();

    _context.Matches.Where(x => matchIDs.Contains(x.ID)).Load();
}

しかし、私が実際に欲しいのは次のようなものです:

public bool UpdateMatches(IEnumerable<Match> matchesToUpdate, int userID)
{
    _context.Matches.Where(m => matchesToUpdate.Any(x => x.ID == m.ID)).Load();
}

しかし、私はエラーが発生しています

「型 'Matches' の定数値を作成できません。このコンテキストでは、プリミティブ型または列挙型のみがサポートされています。」

また、Contains でも試しましたが、うまくいきませんでした。私は何を間違っていますか?

4

1 に答える 1

2

コレクションIDから のリストを取得し、 の代わりに使用します。matchesToUpdateContainsAny

public bool UpdateMatches(IEnumerable<Match> matchesToUpdate, int userID)
{
    var ids = matchesToUpdate.Select(x => x.ID).ToList();
    _context.Matches.Where(m => ids.Contains(m.ID)).Load();
}

IN生成された SQL クエリ内のステートメントになります。

于 2013-04-13T06:38:23.283 に答える