我有一个DbSet联系人,我正在尝试执行以下查询:
from contact in Context.Contacts
where contact.Equals("given contact")
select contact;
我得到NotSupportedOperationException
,系统无法创建非标量类型,如整数或字符串或GUID。
如何在不从数据库中检索所有记录的情况下有效地执行相同的查询(例如,在SQL Server数据库上执行过滤操作)?
注意:我已经覆盖了联系人类型中的Equals方法。
答案 0 :(得分:4)
实体框架无法在SQL代码中将调用转换为Equals。只需手动比较属性:
from contact in Context.Contacts
where contact.Id == givenContact.Id
select contact;
另一个(非常慢)选项 - 从数据库中获取所有联系人并在内存中进行比较:
Context.Contacts.ToList().Where(contact.Equals(givenContact));