实体框架错误:无法为表中的标识列插入显式值

新手上路,请多包涵

我在 EF 上收到此错误。

当 IDENTITY_INSERT 设置为 OFF 时,无法在表“GroupMembers_New”中插入标识列的显式值。

Db 上的列是标识增量,在 EF 设计文件中, StoreGeneratedPattern 也是 identity 。似乎EF每次尝试保存时都尝试插入0。

一些建议说 ID 保留在表上或删除表并重新运行脚本。

有任何想法吗?

这是一些代码:

 GroupMember groupMember = new GroupMember();
            groupMember.GroupId = group.Id;
            groupMember.UserId = (new UserId(group.Owner));
            //groupMember.Id = _groupContext.GroupMembers.Count();
            group.GroupMembers.Add(groupMember);

            _groupContext.SaveChanges();

数据库

EF 设计器

原文由 HoBa 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 690
2 个回答

我以前遇到过这个。此错误意味着您正在尝试将值显式分配给数据库自动分配的列。

建议:更新您的 edmx 文件以反映您在数据库中所做的任何更改。如果数据库自动分配该值,您应该在该属性下的设计器文件中看到“IsDbGenerated=true”属性。如果不存在,您可以手动添加。

原文由 ems305 发布,翻译遵循 CC BY-SA 3.0 许可协议

添加此行以允许 Id 列接收 1、2、3 和 4 值,而不是自动编号。

 Sql("SET IDENTITY_INSERT MembershipTypes ON")

原文由 Naveen Kumar 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进