我的MVC应用程序中的控制器上有以下代码:
public void BulkUpdateGroupResident(List<TherapyGroup> therapyGroups)
{
foreach(var group in therapyGroups)
{
using (var context = new ResidentFirstDBContext())
{
var currentGroup = context.TherapyGroups.Where(g => g.ID == group.ID).FirstOrDefault();
if (group == null)
{
throw new HttpResponseException(HttpStatusCode.NotFound);
}
if (currentGroup.Residents == null)
{
currentGroup.Residents = new List<Resident>();
}
currentGroup.Residents.Clear();
foreach (var id in group.ResidentsId)
{
var resident = context.Residents.Where(r => r.ID.ToString() == id.ToString()).FirstOrDefault();
if (resident == null)
{
throw new HttpResponseException(HttpStatusCode.NotFound);
}
currentGroup.Residents.Add(resident);
}
context.Entry(currentGroup).State = EntityState.Modified;
context.SaveChanges();
}
}
}
预期的功能是它从Post向控制器获取治疗组对象(当前存储居民和groupid),然后它应该采取这些值并将居民添加到居民列表中特定群体;但是,我有一个问题,因为在保存到数据库时,代码似乎不会将居民推入所有正确的组。事实上,我已经确定它只会将它们推入最后选定的组;但是,如果添加到两个后续组的居民是相同的,则只会发生这种情况。例如,我想将John添加到两个不同的组同时不起作用。我知道将同一个对象推入不同的列表是有意义的,但我不知道如何解决这个问题。任何帮助表示赞赏。另外,我的TherapyGroup Model的Model代码如下。它可能会帮助您理解。基本上,我们感兴趣的是模型上的List,它指向另一个对象。
public class TherapyGroup
{
public Guid ID { get; set; }
public List<Resident> Residents { get; set; }
}