Entity Framework 将生成的多对多更改名称 table
Entity Framework change name of generated many to many table
我有一个问题,为多对多关系生成的 table 不是我想要的。有没有办法告诉 Entity Framework 给这个 table 起什么名字?该解决方案有效,我只是对它如何选择命名这个 table.
感到恼火
我的数据库集
public DbSet<Book> Books { get; set; }
public DbSet<BookCategory> BookCategories { get; set; }
我的模型
Models/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; }
}
Models/BookCategory.cs
class BookCategory
{
[Key]
public int Id { get; set; }
public string Name { get; set; }
public List<Book> Books { get; set; }
}
table 在 SQL Server Express 中的外观:
所以我想将 table 最终命名为“BookBookCategory”的内容更改为更相关的内容,我该如何处理? :)
编辑
抱歉,我的意思是这是多对多关系,而不是一对多关系。我希望 table 被命名为类似“BookCategoryId”的名称。
您可以使用 Fluent API 中的 UsingEntity
来配置您的实体类型。
所以,在你的 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"));
}
}
我有一个问题,为多对多关系生成的 table 不是我想要的。有没有办法告诉 Entity Framework 给这个 table 起什么名字?该解决方案有效,我只是对它如何选择命名这个 table.
感到恼火我的数据库集
public DbSet<Book> Books { get; set; }
public DbSet<BookCategory> BookCategories { get; set; }
我的模型
Models/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; }
}
Models/BookCategory.cs
class BookCategory
{
[Key]
public int Id { get; set; }
public string Name { get; set; }
public List<Book> Books { get; set; }
}
table 在 SQL Server Express 中的外观:
所以我想将 table 最终命名为“BookBookCategory”的内容更改为更相关的内容,我该如何处理? :)
编辑
抱歉,我的意思是这是多对多关系,而不是一对多关系。我希望 table 被命名为类似“BookCategoryId”的名称。
您可以使用 Fluent API 中的 UsingEntity
来配置您的实体类型。
所以,在你的 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"));
}
}