У меня есть метод, который обновляет объект ReportRecipient
в EF. Примитивы работают отлично; головная боль возникает при попытке управлять отношениями M2M с объектами RecipientGroups
.
Пожалуйста, посмотрите на этот код:
public IReportRecipient ModifyRecipientWithGroupAssignments(IEnumerable<Guid> groupIds, IReportRecipient recipient)
{
var entity = Context.ReportRecipients
.Include("RecipientGroups")
.FirstOrDefault(e => e.ReportRecipientId == recipient.ReportRecipientId)
.FromIReportRecipient(recipient);
var toRemove = entity.RecipientGroups
.Where(e => !groupIds.Contains(e.GroupId))
.ToList();
//remove group assignments that no longer apply
foreach (var group in toRemove)
{
if (group != null)
{
entity.RecipientGroups.Attach(group);
entity.RecipientGroups.Remove(group);
}
}
var toAdd = entity.RecipientGroups
.Where(e => groupIds.Contains(e.GroupId))
.ToList();
//add new groups that weren't there before
foreach (var group in toAdd)
{
if (group != null)
{
entity.RecipientGroups.Attach(group);
}
}
return entity;
}
... моя проблема в линии var ToAdd...
. Даже если у меня есть коллекция Guids в groupIds
, которая соответствует Guids, представляющим RecipientGroup
объекты в базе данных, toAdd
всегда будет пустой коллекцией. Я думаю, что функция Contains()
подойдет для этого сценария; Может кто-нибудь объяснить, если я делаю что-то не так?