繁体   English   中英

当您通过现有数据库定义“代码优先”时,实体中的映射表名称

[英]Mapping table name in Entity, when you define Code-First by existing Database

我已经定义了数据库,现在我要做代码优先,创建对象,使它们适合当前数据库。

我唯一的问题是映射表名称与我完全不同意。

我的主要表格是“电影”。 然后,我对“演员”有多对多关系,对“流派”也有多对多关系。

我的问题是> Actors的映射表名称完全正确。.实体同意“ MovieActors”,但是! 在流派表中,实体希望调用“ GenreMovies”。

实体为什么要这个? 以及如何强制它使用“ MovieGenres”?

请记住,我已经创建了数据库,并且不希望实体创建任何表。

如果您的类名为Genre ,则按照惯例Code First假定它将映射到名为Genres的表。 如果不是这种情况,则可以使用Table属性指定表的名称。 例如,在这里,注释指定表名称为GenreMovies

[Table("GenreMovies")] 
public class Genre

另一种选择是使用Fluent Api 最简单的方法是在Context中重写OnModelCreating方法:

 protected override void OnModelCreating(DbModelBuilder modelBuilder)
 {
    modelBuilder.Entity<Genre>().ToTable("GenreMovies");
 }

如果要在数据库中更改该表的名称,建议您学习如何使用“代码优先”迁移

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM