在我的程序中,我正在使用Entity Framework并在我的.edmx
模型中添加了一个表。我将插入,更新和删除函数映射到一个存储过程,我的更新过程,因为它是我将在此表上使用的唯一过程。在我的程序中,我循环通过一堆用户获取值并将其添加到实体,最后保存更改。
开始循环
var newGroup = new ru_Groups();
newGroup.adsPath = adsPath;
newGroup.DisplayName = displayName;
newGroup.Domain = domain;
newGroup.AccountName = accountName;
newGroup.Email = email;
newGroup.GroupType = groupType;
UserEntities.ru_Groups.Add(newGroup);
结束循环
UserEntities.SaveChanges();
问题是当我保存更改时出现此错误
数据库的更改已成功提交,但出现错误 更新对象上下文时发生。 ObjectContext可能是 处于不一致的状态。内部异常消息:保存或接受 更改失败,因为多个类型的实体 'AD.Data.ru_Groups'具有相同的主键值。确保这件事 显式设置主键值是唯一的。确保这件事 数据库生成的主键在中正确配置 数据库和实体框架模型。使用实体设计器 用于Database First / Model First配置。使用 'HasDatabaseGeneratedOption'流畅的API或 用于Code First配置的“DatabaseGeneratedAttribute”。
为什么会这样? ID StoredGeneratedPattern
属性设置为Identity
,但是我映射到Update
函数的存储过程不需要ID作为参数,更不用说唯一ID了。 / p>
谢谢