保存对数据库的更改时,实体框架相同的主键值错误

时间:2016-08-31 19:00:49

标签: c# sql-server entity-framework stored-procedures entity-framework-6

在我的程序中,我正在使用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>

谢谢

0 个答案:

没有答案