2014-10-06 37 views
3

我们正在使用几年前创建的数据库,并希望保持表名相同。有没有办法让类名与表名不同?

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

很抱歉,如果这已被问过,我试图寻找,但想出了空手而归......

解决方案:

一些回去后来回斯科特张伯伦,我们得出的结论是两个答案都是正确的。我继续前进,标记了马苏德的答案,因为那是我走的路线。感谢所有帮助过的人(尤其是Scott)。

+2

asp.net-web-api没有特别与你的表名有关。你使用实体框架来将你的类映射到你的表吗? – hometoast 2014-10-06 15:50:38

+0

@hometoast是的,道歉。我应该提到/用Entity Framework标记问题。我现在将编辑它以清晰。 – Primalpat 2014-10-06 16:07:35

+1

这是可能的,但您需要提供更多关于创建模型的方式的详细信息。你做过DatabaseFirst(设计者视图)还是CodeFirst(你自己创建的类)?两种方法改变类名的方式完全不同。 – 2014-10-06 16:42:46

回答

4

您可以使用下面你DbContext代码,所有的实体映射到表:

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

    base.OnModelCreating(modelBuilder); 
} 
4

可以使用表属性或流畅API在你的数据库和类名表名之间的映射

[Table("tbl_Blogs")] 
public class Blog 
+1

注意,只有在他做了CodeFirst的时候,如果他确实让DatabaseFirst在设计师中工作,那么他是非常不同的。 – 2014-10-06 16:59:36

+0

所以在生成类后,我可以修改它们的名称并添加表格属性?这会如何影响Scott提到的设计师? – Primalpat 2014-10-06 17:53:05

相关问题