键(主键)
一个键作为每个实体实例的主要唯一标识符。当使用关系数据库时,这映射到主键的概念。你也可以配置一个唯一的不是主键的标识符, (看Alternate Keys更多的信息)
在这文章中:
键(主键)
公约
数据注解
Fluent API
公约
按惯例,一个命名为ID或<Type Name>ID的属性将被配置为一个实体的键。
class Car
{
public string Id { get; set; }
public string Make { get; set; }
public string Model { get; set; }
}
class Car
{
public string CarId { get; set; }
public string Make { get; set; }
public string Model { get; set; }
}
数据注解
你能使用数据注解来配置一个单一的属性作为一个实体的键
class Car
{
[Key]
public string LicensePlate { get; set; }
public string Make { get; set; }
public string Model { get; set; }
}
Fluent API
你能使用Fluent API来配置一个单一属性作为一个实体的键
class MyContext : DbContext
{
public DbSet<Car> Cars { get; set; }
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<Car>()
.HasKey(c => c.LicensePlate);
}
}
class Car
{
public string LicensePlate { get; set; }
public string Make { get; set; }
public string Model { get; set; }
}
你也能使用Fluent API来配置多个属性作为实体的键(称为复合键)复合键只能使用Fluent API来配置-惯例将永远不会建立一个复合键并且你不能使用数据注解来配置。
class MyContext : DbContext
{
public DbSet<Car> Cars { get; set; }
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<Car>()
.HasKey(c => new { c.State, c.LicensePlate });
}
}
class Car
{
public string State { get; set; }
public string LicensePlate { get; set; }
public string Make { get; set; }
public string Model { get; set; }
}
浙公网安备 33010602011771号