【发布时间】:2021-09-06 00:28:45
【问题描述】:
我正在尝试使用 EF Core fluent API 在两个类之间建立多对多关系。如何更改将为此关系创建的表的外键名称?
例如,如果我们在以下两个类之间创建多对多关系:
public class Student
{
public int StudentId { get; set; }
public string Name { get; set; }
public virtual ICollection<Course> Courses { get; set; }
}
public class Course
{
public int CourseId { get; set; }
public string CourseName { get; set; }
public string Description { get; set; }
public virtual ICollection<Student> Students { get; set; }
}
// 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);
}
}
一个表是这样创建的:
我想要的是使用我在代码优先期间提供的外键名称创建中间表。
我知道我可以将中间表编写为一个类并通过一对多关系更改名称,但我想使用代码优先。
示例取自 EF 核心 documentation。
【问题讨论】:
-
我相信你可以在 .WithMany() 之后添加 .HasForeignKey("ForeignKeyName")。将“ForeignKeyName”替换为您想要的名称。见docs.microsoft.com/en-us/ef/core/modeling/…影子外键
-
不,我不能,即使我可以,那里有两个外键,我可以用 HasForeignkey 函数重命名哪一个。
标签: c# entity-framework-core many-to-many ef-fluent-api