c# - EF Core 迁移循环
问题描述
Course
我在和Student
实体之间定义了一个简单的多对多关系
public class Student
{
public int StudentId { get; set; }
public string Name { get; set; }
public List<Course> Courses { get; set; }
}
public class Course
{
public int CourseId { get; set; }
public string Name { get; set; }
public List<Student> Students { get; set; }
}
我将两个实体都配置为使用my_schema
数据库模式
modelBuilder.Entity<Student>()
.ToTable(nameof(Student), schema: "my_schema");
modelBuilder.Entity<Course>()
.ToTable(nameof(Course), schema: "my_schema");
自动生成的连接表与其相关的表具有相同的模式。这导致了问题。
现在,每个新的迁移都将包含奇怪(且无用)的RenameTable
操作:
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.RenameTable(
name: "CourseStudent",
newName: "CourseStudent",
newSchema: "my_schema");
}
protected override void Down(MigrationBuilder migrationBuilder)
{
migrationBuilder.RenameTable(
name: "CourseStudent",
schema: "my_schema",
newName: "CourseStudent");
}
我正在使用 EntityFramework Core 版本 5.0.2。
我在生成的快照迁移文件中看到CourseStudent
实体映射到表而不指定架构
modelBuilder.Entity("CourseStudent", b =>
{
b.Property<int>("CoursesCourseId")
.HasColumnType("int");
b.Property<int>("StudentsStudentId")
.HasColumnType("int");
b.HasKey("CoursesCourseId", "StudentsStudentId");
b.HasIndex("StudentsStudentId");
b.ToTable("CourseStudent");
});
我想,由于缺少此信息,生成新迁移的工具陷入了一个循环,它正在更改连接表的架构,但忘记在某处注意这一点(快照)。还是我错过了什么?
我知道有一些解决方法,我只想知道这是一个错误还是我的错误实现。
谢谢
解决方案
推荐阅读
- sql - 如何在 Postgres 中存储日期范围数组?
- r - RShiny 事件监听器不会每次都等待用户输入
- regex - 在两个 html 标签之间查找正则表达式
- git - 将 git 分支名称转换为有效的 docker 镜像标签
- php - PHP:将相同的以下多个斜杠字符`///`转换为单个斜杠`/`字符
- java - 边框的中心(子场景)未调整大小
- sas - 在 SAS University Edition 中使用库
- python - 遗漏的数据没有从 Hansard 中被刮掉
- angular - 尝试使用 djangorestframework-simplejwt 和操作符 rxjs 刷新令牌时出错
- python - pandas dataframe python - 使第一行成为最后一行