2017-10-20 107 views
0

我一直在使用EF Code First 1個月。我的項目需要與許多表(超過100個數據表)一起工作,他們將來會多次更改。很難控制,需要時間來添加遷移。如何將表名映射到EF實體?

那麼有什麼解決方案可以跳過添加 - 遷移步驟,只需在數據庫中創建表並創建一個到實體的映射?

例子:

在數據庫中,我有一個這樣的表:

CREATE TABLE dbo.MyTable 
(
    Id INT, 
    Name VARCHAR(255), 
    Description VARCHAR(1000) 
); 

我想把它映射到下列單位:

public class MyEntity 
{ 
    public Id int {get; set;} 
    public Name string {get; set;} 
    public Description string {get; set;} 
} 

我預期的解決方案是這樣的:

CreateMap("dbo.MyTable", MyEntity) 
+1

你可以在你的實體上使用[Table(「MyTable」)]屬性? – MstfAsan

+0

https://stackoverflow.com/help/how-to-ask – Kixoka

回答

2

使用屬性System.ComponentModel.DataAnnotations.Schema.Table

[Table("MyTable")] 
public class MyEntity 
{ 
    public Id int {get; set;} 
    public Name string {get; set;} 
    public Description string {get; set;} 
} 

如果你實際上並不想執行的遷移,我建議他們創造無論如何,並在運行它們之前註釋掉相關的代碼。這樣,當你確實想要運行它們時,你將很好地設置場合。

1

您可以通過覆蓋稱爲OnModelCreating方法在你的DbContext定義實體地圖:

然後你可以添加一些類似於地圖:

modelBuilder.Entity<Order>(m => { 
    m.ToTable("MyTable", "dbo"); 
}) 

信息:https://docs.microsoft.com/en-us/ef/core/modeling/relational/tables

編輯:我不知道比如直接向我的實體添加註釋,因爲我更喜歡將它集中在一個地方。更易於管理。畢竟我想這是偏好的問題:)