Entity framework 有没有办法使类名与表名不同?

Entity framework 有没有办法使类名与表名不同?,entity-framework,asp.net-web-api,Entity Framework,Asp.net Web Api,我们使用的是几年前创建的数据库,希望表名保持不变 我们所有的表都命名为:“tbl_Orders”,但我们希望模型/控制器等的类名为Orders/OrdersController/etc。我们正在使用实体框架将这些类映射到我们的表 很抱歉,如果以前有人问过这个问题,我尝试过搜索,但是空手而归 解决方案: 在与斯科特·张伯伦反复讨论之后,我们得出结论,两个答案都是正确的。我继续,并将马苏德的回答标记为已接受,因为这就是我所走的路线。感谢所有提供帮助的人(特别是Scott)。您可以使用表属性或flue

我们使用的是几年前创建的数据库,希望表名保持不变

我们所有的表都命名为:“tbl_Orders”,但我们希望模型/控制器等的类名为Orders/OrdersController/etc。我们正在使用实体框架将这些类映射到我们的表

很抱歉,如果以前有人问过这个问题,我尝试过搜索,但是空手而归

解决方案:


在与斯科特·张伯伦反复讨论之后,我们得出结论,两个答案都是正确的。我继续,并将马苏德的回答标记为已接受,因为这就是我所走的路线。感谢所有提供帮助的人(特别是Scott)。

您可以使用表属性或fluent api在数据库中的表名和类名之间进行映射

[Table("tbl_Blogs")] 
public class Blog

您可以在
DbContext
中使用以下代码将所有实体映射到表:

protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
   // TableNameConvention
     modelBuilder.Types()
                 .Configure(entity => 
                            entity.ToTable("tbl_" + entity.ClrType.Name));

     base.OnModelCreating(modelBuilder);
}

asp.net-web-api与您的表名没有明确的关系。您是否使用实体框架将类映射到表?@hometoast是的,抱歉。我应该提到/用实体框架标记这个问题。为了清晰起见,我现在将对其进行编辑。这是可能的,但您需要提供创建模型的更多详细信息。您是使用DatabaseFirst(设计器视图)还是CodeFirst(您自己构建的类)?对于这两个方法,更改类名的方式完全不同。您可以,但有两种方法可以做到这一点。一个是直接生成.cs文件(基于现有数据库的代码优先),另一个是使用.edmx(数据库优先)文件生成.designer.cs文件中的类。注意,你在做两个“现有数据库”选项中的哪一个?@Primalpat是的,或者你可以使用注释来配置它,就像ErikEJ的答案一样。两者对EF执行完全相同的配置,这只是两种执行方式。注意,只有在他先编写代码,然后编写数据库的情况下,才能在设计器中使用它。所以在生成类之后,我可以修改它们的名称并添加表属性?这将如何影响斯科特提到的设计师?