我是MVC的新手。使用EF将多个记录更新到数据库时出错。
我使用以下代码进行编辑模式。
if (!string.IsNullOrEmpty(groupView.GroupName) && groupView.MemberIDs.Count > 0)
{
Groups group = new Groups();
List<GroupMembers> existingMembers = null;
if (groupView.GroupID > 0)
{
group.GroupID = groupView.GroupID;
//db.Entry(group).State = EntityState.Modified;
existingMembers = db.GroupMembers.ToList();
}
else
{
group.GroupID = groupView.GroupID;
group.GroupName = groupView.GroupName;
group.IsActive = true;
db.Groups.Add(group);
}
GroupMembers groupMembers, member;
foreach (short memberId in groupView.MemberIDs)
{
groupMembers = new GroupMembers();
if (groupView.GroupID > 0)
{
//Check whether the Member already exists in the group
member = existingMembers.Where(gm => gm.GroupID == groupView.GroupID && gm.MemberID == memberId).FirstOrDefault();
if (member != null)
{
groupMembers.GroupMemberID = member.GroupMemberID;
db.Entry(groupMembers).State = EntityState.Modified;
}
else
groupMembers.GroupMemberID = 0;
}
groupMembers.GroupID = group.GroupID;
groupMembers.MemberID = memberId;
groupMembers.IsActive = Convert.ToBoolean(groupView.IsActive);
if (groupMembers.GroupMemberID == 0)
db.GroupMembers.Add(groupMembers);
}
db.SaveChanges();
在运行时,我收到以下异常:
ObjectStateManager中已存在具有相同键的对象。 ObjectStateManager无法使用相同的键跟踪多个对象
如果我从上面的编码中删除了以下代码,则重复插入数据库中的数据。
db.Entry(group).State = EntityState.Modified;
我是MVC,EF的新手,据我所知,我编写了上述编码。我搜索并检查了一些错误信息的问题,但我无法理解清楚。所以我把我的编码。请指导我解决此问题。
提前致谢。