我们正在使用实体框架代码优先模型,其类结构如下
public class BaseSchema
{
[Key]
[ScaffoldColumn(false)]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int Id { get; set; }
[Display(Name = "Is Deleted")]
public bool IsDeleted { get; set; }
}
public class School : BaseSchema
{
[Required]
[MaxLength(20)]
public string Name { get; set; }
}
当我们将信息保存在学校表中时,它的ID字段未按顺序生成。 Ex最初以1,2,3,4,5,6,7,8,9,10顺序开始,然后突然创建了下一个id值1011,2011我们在学校里存钱如下
using (var context = new DataContext())
{
School newschool = new School { Name = "UniqueSchoolName" };
context.School.Add(newschool);
context.SaveChanges();
}
您能否指导为什么不按顺序生成ID?谢谢!
您不应该在意差距。
出于性能原因,这是设计使然,SQL Server缓存了1,000个数字,而在SQL Server上重新启动时,缓存就消失了。
并且该行为的详细记录,请参见CREATE TABLE (Transact-SQL) IDENTITY (Property) =>注释:“服务器重启或其他故障后的连续值”
此外,当回滚插入时,不会重置标识值