c# - 实体框架更改生成的多对多表的名称
问题描述
我有一个问题,即为多对多关系生成的表不是我想要的。有没有办法告诉 Entity Framework 给这个表起什么名字?该解决方案有效,我只是对它选择命名该表的方式感到恼火。
我的数据库集
public DbSet<Book> Books { get; set; }
public DbSet<BookCategory> BookCategories { get; set; }
我的模型
模型/Book.cs
class Book
{
[Key]
public int Id { get; set; }
public string Title { get; set; }
public string Author { get; set; }
public int Price { get; set; }
public int Amount { get; set; }
public int BookCategoryId { get; set; }
public List<BookCategory> BookCategories { get; set; }
}
模型/BookCategory.cs
class BookCategory
{
[Key]
public int Id { get; set; }
public string Name { get; set; }
public List<Book> Books { get; set; }
}
该表在 SQL Server Express 中的外观:
所以我想将最终命名为“BookBookCategory”的表格更改为更相关的东西,我该如何处理?:)
编辑
抱歉,我的意思是这是多对多的关系,而不是一对多的关系。我希望将表命名为“BookCategoryId”之类的名称。
解决方案
您可以使用UsingEntity
Fluent API 中的 来配置您的实体类型。
所以,在你的OnModelCreating
你可以有这个:
internal class MyContext : DbContext
{
public MyContext(DbContextOptions<MyContext> options)
: base(options)
{
}
public DbSet<Book> Books { get; set; }
public DbSet<BookCategory> Tags { get; set; }
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder
.Entity<Book>()
.HasMany(b => b.BookCategories)
.WithMany(bc => bc.Book)
.UsingEntity(j => j.ToTable("YourCustomName"));
}
}
推荐阅读
- django - 覆盖 Django 中模型的批量删除
- kotlin - 如何在 Kotlin 中使用 getInstance?
- symfony - Symfony 4 "code": 401, "message": "Invalid credentials." jwt认证错误
- python - 按索引/编号选择目录中的文件
- google-visualization - hideColumns 和 getVIewColumns 与谷歌图表
- postgresql - 检查元素是否是没有键的 JSON 数组的一部分
- python - Sikuli 脚本随机停止
- python - 如何对角镜像 NxNx3 numpy 数组
- html - 将图标垂直居中放置在其框内
- python - AttributeError:“模块”对象没有属性“模型”,而模型字没有写在任何地方,