C# 如何强制实体框架使用我的比较器

C# 如何强制实体框架使用我的比较器,c#,entity-framework,C#,Entity Framework,我有以下问题 我需要从数据库中删除包含相关对象的上下文项。(对象建筑具有属性列表) 我创建了一个包含旧数据库对象的列表,如下所示: List<Building> oldContext = db.Buildings.Include(o => o.Rooms).ToList(); 但当我这样做的时候: db.Buildings.Attach(BuildingToDelete1); db.Buildings.Remove(BuildingToDelete1); db.SaveCha

我有以下问题

我需要从数据库中删除包含相关对象的上下文项。(对象建筑具有属性列表)

我创建了一个包含旧数据库对象的列表,如下所示:

List<Building> oldContext = db.Buildings.Include(o => o.Rooms).ToList();
但当我这样做的时候:

db.Buildings.Attach(BuildingToDelete1);
db.Buildings.Remove(BuildingToDelete1);
db.SaveChanges();
它工作得很好。。。问题是当我尝试对变量BuildingToDelete2执行相同操作时-它会引发异常,但这两个变量的内容几乎相同(例如ID不同)

我的问题是如何强制实体框架将objecst与BuildingComparer()进行比较


谢谢你的回答,一点也不。EF只能使用可以进入数据库的结构,即转换为LINQ。你的比较器不能


在不使用它们的情况下进行拉取,然后切换到LINQ to objects-方法是将EF查询设置为ASENUMRABLE()。在您的流程中进行该处理之后,SQL翻译要求不再适用。

@user3423000如果此答案解决了您的问题,请勾选答案旁边的复选标记,将答案标记为已接受。
BuildingToDelete1 = oldContext.FirstOrDefault(o => new BuildingComparer().Equals(o, newContext[0]))

BuildingToDelete2 = newContext[0]
db.Buildings.Attach(BuildingToDelete1);
db.Buildings.Remove(BuildingToDelete1);
db.SaveChanges();