0

連絡先の DbSet があり、次のクエリを実行しようとしています。

from contact in Context.Contacts 
where contact.Equals("given contact") 
select contact; 

システムがNotSupportedOperationException整数、文字列、GUID などの非スカラー型を作成できないことがわかりました。
データベースからすべてのレコードを取得せずに同じクエリを効率的に実行するにはどうすればよいですか (たとえば、SQL サーバー データベースでフィルタリング操作を実行します)。

注: Contact タイプの Equals メソッドをオーバーライドしました。

4

1 に答える 1

4

Entity Framework は、SQL コードで呼び出しを Equals に変換できません。プロパティを手動で比較するだけです:

from contact in Context.Contacts 
where contact.Id == givenContact.Id
select contact;

別の (非常に遅い) オプション - データベースからすべての連絡先を取得し、メモリ内で比較を行います。

Context.Contacts.ToList().Where(contact.Equals(givenContact)); 
于 2012-12-11T17:53:05.733 に答える