如何在EF Core Fluent API中自定义多对多关联中间表的外键名称
你可以直接通过EF Core提供的UsingEntity重载方法实现需求,无需手动定义中间表对应的实体类,仅需在原有多对多关联的Fluent API配置中追加配置即可,示例如下:
public class UserMap : IEntityTypeConfiguration<User> { public void Configure(EntityTypeBuilder<User> builder) { builder.HasKey(x => x.Id); builder.ToTable("Users"); builder.HasMany<Course>(user => user.Courses) .WithMany(course => course.Users) // 追加以下配置即可自定义中间表和外键 .UsingEntity( // 第一个参数为自定义中间表名,不需要修改可省略 "UserCourse", // 配置指向Course表的自定义外键名 course => course.HasOne<Course>().WithMany().HasForeignKey("CustomCourseId"), // 配置指向User表的自定义外键名 user => user.HasOne<User>().WithMany().HasForeignKey("CustomUserId") ); } }
补充说明:
- 以上方案适用于EF Core 5.0及更高版本,是官方原生支持的隐式中间表配置方案,符合你要求的代码优先原生配置逻辑
HasForeignKey参数内的字符串可以替换为你需要的任意外键名称- 如果无需修改中间表的默认表名,直接删除
UsingEntity的第一个字符串参数即可
内容的提问来源于stack exchange,提问作者Ali Yıldızöz
相关产品推荐
相关产品推荐

