EF Core - 身份字段突然跃升 1000,无法使用 Id 进行搜索

Ste*_*eve 3 database asp.net entity-framework asp.net-core

primary key/Id在项目中的一张表有问题。在该表中,Id突然从跳下381039

现在真正的问题是,当我通过1039它找到实体时,它并不存在,但是通过它找到39了实体。我不确定这种行为,因此无法找到解决方案。

我的模型

public class Domain : Entity
{
        public string Name { get; set; }
        public string Description { get; set; }
}


public abstract class Entity
{

  public int Id { get; set; }

    public DateTime InsertDate { get; set; }

    public DateTime? UpdateDate { get; set; }

    public DateTime? DeleteDate { get; set; }

    public bool IsDeleted { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

方法是这样的...

public async Task<Response> Delete(int id)
{
            var domain = await DataContext.Domains.FindAsync(id);

            if (domain == null)
            {
                return new Response(ResponseType.NotFound);
            }
}
Run Code Online (Sandbox Code Playgroud)

任何人都可以帮忙吗?

小智 5

它取决于数据库设置 IDENTITY-CACHE。

身份缓存存储身份列的一些值,以防在事务期间发生 SQL 崩溃或类似情况。为了避免标识列中的空白,您需要将 IDENTITY-CACHE 设置为 OFF 在 SQL 查询窗口上运行此命令:

ALTER DATABASE SCOPED CONFIGURATION SET IDENTITY_CACHE = OFF
GO
Run Code Online (Sandbox Code Playgroud)

你会在这里找到更多信息:

https://social.technet.microsoft.com/wiki/contents/articles/40666.sql-server-2017-identity-cache-feature.aspx