2015-07-28 31 views
2

我有數據庫和多個表裏面,我在我的項目中使用EF代碼第一種方法。用代碼第一種方法在DB中重命名錶

在某些時候,我需要更改數據庫中某些或所有表的名稱。

以代碼優先的方式實現它的最佳方式是什麼?

+0

用'[表]裝飾你的實體'(https://msdn.microsoft表名。或使用FluentApi(https://msdn.microsoft.com/en-us/data)顯式設置映射/jj591617.aspx#2.3)。 – haim770

回答

2

這將改變您的實體映射到的表。

protected override void OnModelCreating(DbModelBuilder modelBuilder) 
{ 
     modelBuilder.Entity<User>().ToTable("Users"); 
} 
+1

請注意,在創建具有新名稱的表之前,更改表名可能會導致您的遷移先刪除表。 –

4

您需要重命名與遷移表,即

public override void Up() 
{ 
    RenameTable("MyOldTableName", "MyNewTableName"); 
} 

public override void Down() 
{ 
    RenameTable("MyNewTableName", "MyOldTableName"); 
} 

然後,你需要改變映射表名。如果您使用數據批註您可以指定表屬性

[Table("MyNewTableName")] 
class MyEntity 
{ 
    // props 
} 

如果你使用流利interace

protected override void OnModelCreating(DbModelBuilder modelBuilder) 
{ 
     modelBuilder.Entity<MyEntity>().ToTable("MyNewTableName"); 
} 
相關問題