2014-10-06 65 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

相關問題