Entity Framework中的实体类添加复合主键
时间: 2024-02-01 22:13:05 浏览: 22
在 Entity Framework 中创建实体类时,可以通过在实体类中使用 [Key] 属性来指定一个主键。但是,如果需要创建复合主键,则需要使用 [Key] 属性的重载版本。
下面是一个示例实体类,其中包含两个属性作为组合主键:
```csharp
public class Employee
{
[Key, Column(Order = 0)]
public int Id { get; set; }
[Key, Column(Order = 1)]
public int DepartmentId { get; set; }
public string Name { get; set; }
}
```
在上面的示例中,[Key] 属性被应用到 Id 和 DepartmentId 属性上,并且使用 [Column] 属性指定它们的顺序。这告诉 Entity Framework 这两个属性一起形成了复合主键。
注意,如果使用 Code First 进行数据库生成,需要在 DbContext 类中重写 OnModelCreating 方法,并使用 modelBuilder.Entity<T>() 方法来指定实体类的配置:
```csharp
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<Employee>()
.HasKey(e => new { e.Id, e.DepartmentId });
}
```
在上面的示例中,使用 HasKey 方法指定实体类 Employee 的复合主键是 Id 和 DepartmentId 属性。