繁体   English   中英

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

[英]Entity Framework error: Cannot insert explicit value for identity column in table

我在 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 设计器

我在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设计师

我在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设计师

我在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设计师

我在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设计师

我在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设计师

我在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设计师

我在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设计师

我在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设计师

我在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设计师

我在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设计师

我首先使用 DB 并且该表具有标识列。 我没有使用 db-scaffolding 来生成它,我从另一个实体复制了它,并且错误地使用了这个属性。

所以

尝试检查 DBContext 类。 我收到了这个错误,问题出在这个属性“.ValueGeneratedNever()”上,我刚刚删除了它,它工作正常,

modelBuilder.Entity<TableName>(entity =>
        {
            entity.Property(e => e.Id)
                //.ValueGeneratedNever()
                .HasColumnName("ID");
        });

注意:版主删除了这个答案作为重复,并留下了我的另一个答案,一个只有 sql-server 标签的问题(这是我从谷歌得到的第一个问题)。 由于这个问题有实体框架标签,所以在这里再次发布答案。

这适用于 EntityFramework Core 3.1.22。 使用错误的属性来指定外键会导致 Entity Framework 将主键降级为……其他东西。 然后,实体框架将始终尝试插入显式值,这会引发数据库异常,因为它无法插入被告知是主键且不应插入的值。

Microsoft.EntityFrameworkCore.DbUpdateException: 'An error occurred while updating the entries. See the inner exception for details.'
Inner Exception:
SqlException: Cannot insert explicit value for identity column in table 'FOO' when IDENTITY_INSERT is set to OFF.

如果您不想使用 EF 核心的自动生成主键值功能,可以将其关闭。 您可以将数据添加到主键它应该可以解决错误 - Set Identity Insert off

[Key]

[DatabaseGenerated(DatabaseGeneratedOption.None)]

public int StudentId { get; set; }

将数据库生成选项设置为无对我有帮助。 您可以在此处找到更多相关信息 - https://docs.microsoft.com/en-us/ef/core/modeling/generated-properties?tabs=data-annotations

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

Sql("SET IDENTITY_INSERT MembershipTypes ON")

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM