1

このクエリの実行:

var holderAccounts = db.AccountDetails.Include(p => p.BranchDetail)
               .Where(p => holder.AccountDetails.Any(a => a.Id == p.Id));

私はこの例外を受け取ります:

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

関係は次のとおりです。

 AccountHolder 1 to many AccountDetail 1 to 1 BranchDetail

私は何を間違っていますか?

4

3 に答える 3

1

ほとんどの場合、Any()はサポートされていません。このクエリを試してください:

var ids = holder.AccountDetails.Select(x => x.Id).ToList();
var holderAccounts = db.AccountDetails.Include(p => p.BranchDetail)
           .Where(p => ids.Contains(p.Id));
于 2013-03-12T18:37:13.970 に答える
1

最初に関連する ID を抽出してみてください。

var accountDetailIds = holder.AccountDetails.Select(a => a.Id);
var holderAccounts = db.AccountDetails
    .Include(p => p.BranchDetail)
    .Where(p => accountDetailIds.Contains(p.Id));
于 2013-03-12T18:39:44.173 に答える
0

あなたがやろうとしていることは、SQL Where-In 句と同じだと思います。Jeffery Khan が述べたように、クエリの対象となる条件を抽出し、別のステートメントでクエリを実行します。この記事が、クエリの読みやすさを向上させるために使用されるこの優れたプラクティスを理解するのに役立つことを願っています。

于 2013-03-12T18:47:38.363 に答える