asp mvc 代码优先如何定义主键
时间: 2024-10-25 08:05:14 浏览: 7
在ASP.NET MVC中,如果你使用的是Entity Framework Code First的方式来定义数据库模型,你可以通过数据annotations或者 Fluent API来定义主键。这里我会分别介绍这两种方法:
1. 数据Annotations:
- 使用`[Key]`属性标记字段作为主键:
```csharp
public class MyEntity
{
[Key]
public int Id { get; set; }
// 其他字段...
}
```
- 如果实体有多个字段构成复合主键,可以使用`[CompositeKey]`和`[KeyMember]`:
```csharp
public class MyCompositeKeyEntity
{
[Key, KeyMember(0)]
public int Field1 { get; set; }
[Key, KeyMember(1)]
public int Field2 { get; set; }
// 其他字段...
}
```
2. Fluent API (当使用DbContext类扩展时):
- 在`ModelBuilder`上下文中定义主键:
```csharp
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<MyEntity>()
.HasKey(e => e.Id);
modelBuilder.Entity<MyCompositeKeyEntity>()
.HasKey(e => new { e.Field1, e.Field2 });
}
```
无论哪种方法,记得在实际应用中,确保主键的唯一性和非空约束。
阅读全文