0

我有一个 DbSet 联系人,我正在尝试执行以下查询:

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

我得到一个NotSupportedOperationException系统无法创建非标量类型,如整数、字符串或 GUID。
如何在不从数据库中检索所有记录的情况下有效地执行相同的查询(例如,在 SQL 服务器数据库上执行过滤操作)?

注意:我已经覆盖了 Contact 类型中的 Equals 方法。

4

1 回答 1

4

实体框架无法将调用转换为 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 回答