主键

键充当每个实体实例的唯一标识符。 EF 中的大多数实体都有一个键,此键映射到关系数据库中主键的概念(对于没有键的实体,请参阅无键实体)。

按照约定,将名为 Id 或 <type name>Id 的属性配置为实体的主键。

例如下面的

class Car
{
    public string Id { get; set; }

    public string Make { get; set; }
    public string Model { get; set; }
}

class Truck
{
    public string TruckId { get; set; }

    public string Make { get; set; }
    public string Model { get; set; }
}Code language: JavaScript (javascript)

可以将单个属性配置为实体的主键,如下所示:

class Car
{
    [Key]
    public string LicensePlate { get; set; }

    public string Make { get; set; }
    public string Model { get; set; }
}Code language: JavaScript (javascript)

或者

protected override void OnModelCreating(ModelBuilder modelBuilder)
{
    modelBuilder.Entity<Car>()
        .HasKey(c => c.LicensePlate);
}Code language: JavaScript (javascript)

你还可以将多个属性配置为实体的键,这称为组合键。 复合密钥只能使用熟知的 API 进行配置;约定将永远不会设置组合键,你不能使用数据批注来配置它。

protected override void OnModelCreating(ModelBuilder modelBuilder)
{
    modelBuilder.Entity<Car>()
        .HasKey(c => new { c.State, c.LicensePlate });
}Code language: JavaScript (javascript)

主键名称

按照约定,使用名称 PK_<type name>创建关系数据库主键。 可以按如下所示配置 primary key 约束的名称:

protected override void OnModelCreating(ModelBuilder modelBuilder)
{
    modelBuilder.Entity<Blog>()
        .HasKey(b => b.BlogId)
        .HasName("PrimaryKey_BlogId");
}Code language: JavaScript (javascript)
Previous:
Next:

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注