当您通过现有数据库定义Code-First时,在Entity中映射表名称

时间:2015-02-03 07:44:29

标签: c# entity-framework tsql many-to-many relationship

我已经定义了我的数据库,现在我正在执行代码优先,创建对象以便它们适合当前的数据库。

我唯一的问题是映射表的名称并不完全与我结合。

我的主要表是"电影"。然后我有一个多对多的演员"和另一个多对多的演奏"类型"。

我的问题是>   Actors的映射表名称完全正常。实体与" MovieActors",但是!类型表,实体想要调用" GenreMovies"。

为什么实体想要这个?我怎么能强迫它使用" MovieGenres"?

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

1 个答案:

答案 0 :(得分:0)

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

[Table("GenreMovies")] 
public class Genre

另一个选择是使用Fluent Api。最简单的方法是覆盖上下文中的OnModelCreating方法:

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

如果您想更改数据库中该表的名称,建议您学习如何使用Code First Migration