我有以下问题。
我需要从数据库上下文项中删除相关对象。 (对象构建具有属性列表)
我有一个旧数据库对象的列表,就像这样创建:
List<Building> oldContext = db.Buildings.Include(o => o.Rooms).ToList();
然后是来自Web服务的新对象列表
List<Building> newContext = CallService();
然后我设置了两个变量 - 我想从db中删除的建筑物:
BuildingToDelete1 = oldContext.FirstOrDefault(o => new BuildingComparer().Equals(o, newContext[0]))
BuildingToDelete2 = newContext[0]
但是我这样做了:
db.Buildings.Attach(BuildingToDelete1);
db.Buildings.Remove(BuildingToDelete1);
db.SaveChanges();
它工作得很好......问题是当我尝试使用变量BuildingToDelete2做同样的事情时 - 它会抛出异常,但两个变量的内容几乎相同(例如ID不同)
我的问题是如何强制实体框架比较objecst和我的BuildingComparer()。
感谢您的回答
答案 0 :(得分:0)
完全没有。 EF只能使用可以进入数据库的构造 - 即转换为LINQ。你的比较器不能。
在没有它们的情况下拉,然后切换到LINQ到对象 - 通过使EF查询AsEnumreable()。在您的流程中进行处理后,SQL转换要求不适用。