Entity framework EF LINQ按其他列表中不存在的值获取记录列表
所以,我有一个连接表叫做:Entity framework EF LINQ按其他列表中不存在的值获取记录列表,entity-framework,linq,Entity Framework,Linq,所以,我有一个连接表叫做: AppointmentsActivities 包括: AppointmentID ActivityID 我需要执行更新操作。因为它是一个连接表,所以更新应该不仅能够更新现有记录,而且能够插入新记录,或者删除不再需要在表中存在的记录(因为我正在传递一个具有appointmentID和ActivityID列表的实体) 我正在努力删除那些不应该再存在于表中的记录。 我必须删除所有具有相同AppointmentId的记录,但他的ActivityID不应出现在新活动列表中的
AppointmentsActivities
包括:
AppointmentID
ActivityID
我需要执行更新操作。因为它是一个连接表,所以更新应该不仅能够更新现有记录,而且能够插入新记录,或者删除不再需要在表中存在的记录(因为我正在传递一个具有appointmentID和ActivityID列表的实体)
我正在努力删除那些不应该再存在于表中的记录。
我必须删除所有具有相同AppointmentId的记录,但他的ActivityID不应出现在新活动列表中的任何对象中
我编写的查询如下所示:
var remove = _context.AppointmentsActivities.
Where(i => i.AppointmentID == entity.ID && entity.Activities.Any(u => u.ActivityID != i.ActivityID)).
ToList();
其中:
i => i.AppointmentID == entity.ID
检查新传递的实体的appointmentID是否与数据库表中的相同
以及:
应该检查活动列表中的任何activityID是否等于数据库表中的activityID
很明显,我遗漏了一些东西,因为EF无法解析这个LINQ查询。我错过了什么?任何帮助都将不胜感激。谢谢。尝试重写LINQ查询以使EF能够接受<代码>任何带有本地集合的都不起作用,因此替换为
包含
:
var ActivityID=entity.Activities.Select(a=>a.ActivityID.ToList();
var remove=\u context.AppointmentsActivities
。其中(i=>i.AppointmentID==entity.ID&&!ActivityID.Contains(i.ActivityID))
.ToList();
entity.Activities.Any(u => u.ActivityID != i.ActivityID)