``` modelBuilder.Entity<BioInfo>() .HasForeignKey(c => c.UserId);``` EF Core 中 `.HasForeignKey` 还可以配置哪些选项?
时间: 2024-10-31 15:04:22 浏览: 10
Model Builder.zip
在 Entity Framework Core (EF Core) 中,`.HasForeignKey` 方法用于指定外键约束,即当关联两个实体时,如何将一个实体的标识映射到另一个实体。除了指定了关联属性 `c => c.UserId` 之外,`.HasForeignKey` 还可以配置以下选项:
1. **`onDelete`**:设置当删除主键记录时对依赖记录的行为。例如,`CASCADE` 表示删除主表记录时,会自动删除从表对应的记录;`SET NULL` 则设置为NULL。
```cs
modelBuilder.Entity<BioInfo>()
.HasForeignKey(c => c.UserId)
.OnDelete(DeleteBehavior.Cascade);
```
2. **`column`**:如果需要指定一个不同于默认外键列的特定列作为外键,可以提供列名。
```cs
modelBuilder.Entity<BioInfo>()
.HasForeignKey(c => c.OtherForeignKeyColumn)
.HasColumnName("FK_BioInfo_Users");
```
3. **`principalId` 和 `dependentId`**:有时候,如果你使用的是复杂的关系模型,可能需要配置更精确的外键关系,这时可以显式地指定主键和依赖键。
```cs
modelBuilder.Entity<BioInfo>()
.HasForeignKey(c => new { c.UserId, c.BioId })
.PrincipalId(p => p.UserId)
.DependentId(d => d.BioId);
```
4. **`IsRequired`**: 设置外键字段是否允许为 `null`。
```cs
modelBuilder.Entity<BioInfo>()
.HasForeignKey(c => c.UserId)
.IsRequired(false);
```
记得在实际应用中,根据数据库设计选择合适的配置。
阅读全文