我正在使用ASP.NET Core和EF Core进行代码优先的开发。数据库是SQL Server。是否可以从0开始递增Id
主键?
我正在使用ASP.NET Core和EF Core进行代码优先的开发。数据库是SQL Server。是否可以从0开始递增Id
主键?
使用 EF Core 3.x,您可以使用 UseIdentityColumn:
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
// ...
modelBuilder.Entity<Blog>()
.Property(x => x.Id)
.UseIdentityColumn(seed: 0, increment: 1);
}
可以将主键Id从0开始递增吗?
是的。EF Core支持Sequences序列,您可以从任何位置开始。
例如:
class MyContext : DbContext
{
public DbSet<Order> Orders { get; set; }
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.HasSequence<int>("Order_seq", schema: "dbo")
.StartsAt(0)
.IncrementsBy(1);
modelBuilder.Entity<Order>()
.Property(o => o.OrderNo)
.HasDefaultValueSql("NEXT VALUE FOR dbo.Order_seq");
}
}
public class Order
{
public int OrderId { get; set; }
public int OrderNo { get; set; }
public string Url { get; set; }
}
https://learn.microsoft.com/en-us/ef/core/modeling/relational/sequences
IDENTITY [ (seed , increment ) ]
SQL:
CREATE TABLE (
ID_column INT NOT NULL IDENTITY(1,1) PRIMARY KEY,
...
);
< p > IDENTITY
属性将自动递增列号从1开始。(请注意,该列的数据类型应为整数。) 如果您想将其添加到现有列中,请使用 ALTER TABLE 命令。
identity
。只需使用普通的Id int primary key
,然后用你明确的值填充它。 - Roger Wolf