.net LINQ to实体无法识别方法';布尔包含
我写了这样一份声明:.net LINQ to实体无法识别方法';布尔包含,.net,c#-4.0,iequalitycomparer,.net,C# 4.0,Iequalitycomparer,我写了这样一份声明: if (!db.Customers.Contains<Customer>(customer,customerCompairor)) { db.Customers.Add(customer); } pmkeycompior正在实施IEqualityComparer 类pmkeycompior:IEqualityComparer { ..............
if (!db.Customers.Contains<Customer>(customer,customerCompairor))
{
db.Customers.Add(customer);
}
pmkeycompior正在实施IEqualityComparer
类pmkeycompior:IEqualityComparer
{
........................
.............................
}
客户的扩展方法包含(返回bool),因为它是DbSet
那么我错在哪里呢?Linq to Entities查询被转换为SQL,但无法将自定义比较器的逻辑转换为SQL,因此必须在内存中进行比较。你可以这样做:
if (!db.Customers.AsEnumerable().Contains<Customer>(customer,customerCompairor))
如果(!db.Customers.Any(c=>match condition))
class PMKeyCompairor:IEqualityComparer<Customer>
{
........................
.............................
}
if (!db.Customers.AsEnumerable().Contains<Customer>(customer,customerCompairor))
if (!db.Customers.Any(c => c.Id == customer.Id && c.Name == customer.Name))