这个错误说明你在循环添加的时候存在相同的键值m.StaffReceiveId = Convert.ToInt32(sendArr[i]);StaffReceiveId 不能存在重复值,所以你需要首先去重复,然后再添加。
解决方案 »
- .NET求教各位控件心得
- 高分请教如何从数据库中读取二进制图片放datalist显示
- 谁有仿动网的编辑器
- Atlas的UpdatePanel能支持asp.net WebPart不刷新的拖动吗?`
- 有关注入式攻击,请教!!
- 我有一个sqlserver数据库的备份文件(文件类型为database file),请问如何导入到数据库,谢谢!
- 100分求教一个问题。下载源码的问题。
- 关于iis的问题
- 如何定位文件路径?
- 新手的问题---如何达到单击一个按钮传递一个参数,详情请进(在线给分).
- 提个关于webform里使用BackgroundWorker+Ajax的问题,请大侠看看想,谢谢
- VS2005最后一项sql X86安装失败
不仅仅是循环,调用 addMessage 方法时 可能会多次循环在这些操作之间 也不能有重复的
{
m.StaffReceiveId = Convert.ToInt32(sendArr[i]);
oaet.Messages.AddObject(m);
oaet.SaveChanges();
}
{
m.StaffReceiveId = Convert.ToInt32(sendArr[i]);
oaet.Messages.AddObject(m);
oaet.SaveChanges();
}
你的这个方法是将对象加到 List 里面吗?
不是啊,AddObject是ef框架中的一个添加方法
在循环的时候,不给id赋值,因为id是主键。 public void addMessage(Message mm,string arr)
{
var sendArr = arr.Split('|'); for (int i = 0; i < sendArr.Count() - 1; i++)
{
Message mmm = new Message();
mmm.MessageName = mm.MessageName;
mmm.StaffReceiveId = Convert.ToInt32(sendArr[i]);
md.addMessage(mmm);
}
}
{
m.StaffReceiveId = Convert.ToInt32(sendArr[i]);
oaet.Messages.AddObject(m);
oaet.SaveChanges();
oaet
.ObjectStateManager
.ChangeObjectState(m, System.Data.EntityState.Added);
}
试试看