我想遍历对象集合并将它们全部添加到表中。目标表具有一个自动增量字段。如果我添加一个对象,就没有问题。如果我添加两个主键均为零的对象,则实体框架将失败。我可以手动指定主键,但是尝试EF的全部目的是使生活更轻松,而不是更复杂。这是代码,收到的异常如下。
foreach (Contact contact in contacts) { Instructor instructor = InstructorFromContact(contact); context.AddToInstructors(instructor); } try { context.SaveChanges(); } catch (Exception ex) { Console.WriteLine(ex.ToString()); }
错误是:
System.InvalidOperationException :已成功提交对数据库的更改,但是在更新对象上下文时发生错误。ObjectContext可能处于不一致状态。内部异常消息:AcceptChanges无法继续,因为对象的键值与ObjectStateManager中的另一个对象冲突。在调用AcceptChanges之前,请确保键值是唯一的。在System.Data.Objects.ObjectContext.SaveChanges(SaveOptions选项) 在System.Data.Objects.ObjectContext.SaveChanges()在DataMigration.Program.CopyInstructors()在C:\ Projects \ DataMigration \ Program.cs:line 52
System.InvalidOperationException :已成功提交对数据库的更改,但是在更新对象上下文时发生错误。ObjectContext可能处于不一致状态。内部异常消息:AcceptChanges无法继续,因为对象的键值与ObjectStateManager中的另一个对象冲突。在调用AcceptChanges之前,请确保键值是唯一的。在System.Data.Objects.ObjectContext.SaveChanges(SaveOptions选项)
在System.Data.Objects.ObjectContext.SaveChanges()在DataMigration.Program.CopyInstructors()在C:\ Projects \ DataMigration \ Program.cs:line 52
在您的SSDL中为自动增量字段将StoreGeneratedPattern属性设置为“ Identity”。应该会有所帮助。