EFCore给多对多关系的中间表添加额外字段

在 EF Core 中创建多对多关系时,可以使用 Fluent API 指定中间表,然后通过手动创建该中间表来添加额外字段。

以下是一个示例,使用 Fluent API 指定多对多关系的中间表并添加额外的字段:

```
// 定义中间表实体
public class UserPermission 
{ 
    public int UserId { get; set; } 
    public User User { get; set; } 
    public int PermissionId { get; set; } 
    public Permission Permission { get; set; } 
    public DateTime CreatedTime { get; set; } 
    // 添加额外字段
    public string Source { get; set; }  
} 
 
// 定义 User 和 Permission 实体
public class User 
{ 
    public int Id { get; set; } 
    public string Name { get; set; } 
    public ICollection<UserPermission> UserPermissions { get; set; } 
} 
 
public class Permission 
{ 
    public int Id { get; set; } 
    public string Name { get; set; } 
    public ICollection<UserPermission> UserPermissions { get; set; } 
} 
 
// 使用 Fluent API 指定中间表
protected override void OnModelCreating(ModelBuilder modelBuilder) 
{ 
    modelBuilder.Entity<UserPermission>() 
        .HasKey(up => new { up.UserId, up.PermissionId });
        
    modelBuilder.Entity<UserPermission>() 
        .HasOne(up => up.User) 
        .WithMany(u => u.UserPermissions) 
        .HasForeignKey(up => up.UserId); 
 
    modelBuilder.Entity<UserPermission>() 
        .HasOne(up => up.Permission) 
        .WithMany(p => p.UserPermissions) 
        .HasForeignKey(up => up.PermissionId);
        
    // 添加额外字段
    modelBuilder.Entity<UserPermission>()
        .Property(up => up.Source)
        .HasMaxLength(30);
}
```

这里创建了一个 `UserPermission` 实体来表示多对多关系中间表,并添加了一个名为 `Source` 的额外字段。使用 Fluent API `HasOne` 和 `WithMany` 方法指定多对多关系的两个实体,然后指定中间表的主键和外键。最后,使用 `Property` 方法来为 `Source` 字段添加长度限制。

在程序中使用时,通过 EF Core ORM 操作 `UserPermission` 实体来操作多对多关系,并访问额外字段。

想要给中间表添加额外字段,就必须创建中间实体类!并配置对应关系

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值