2012-09-24 77 views
4

我需要找到哪個表映射到一個EntityTypeConfiguration類。 例如:如何查找通過流暢API映射哪個表?

public class PersonMap : EntityTypeConfiguration<Person> 
    { 
     public PersonMap() 
     { 
    ... 
      this.ToTable("Persons"); 
    .... 

     } 
    } 

我需要類似的反向映射:

var map=new PersonMap(); 
string table =map.GetMappedTableName(); 

我怎樣才能做到這一點?

回答

2

添加領域PersonMap:

public class PersonMap : EntityTypeConfiguration<Person> 
{ 
    public string TableName { get { return "Persons"; } } 
    public PersonMap() 
    { 
     ... 
     this.ToTable(TableName); 
     ... 
    } 
} 

訪問它像這樣:

var map = new PersonMap(); 
string table = map.TableName; 

如果您可能不知道的地圖類型,使用接口:

public interface IMap 
{ 
    string TableName { get; } 
} 
public class PersonMap : EntityTypeConfiguration<Person>, IMap 
{ 
    public string TableName { get { return "Persons"; } } 
    public PersonMap() 
    { 
     ... 
     this.ToTable(TableName); 
     ... 
    } 
} 

像這樣訪問:

IMap map = new PersonMap(); 
string table = map.TableName; 
+2

找到TableName而不進入EntityTypeConfiguration是個好主意。但是,列名呢? 例如在PersonMap中: this.ToTable(TableName); this.Property(t => t.Code).HasColumnName(「Code」); this.Property(t => t.Name).HasColumnName(「FirstName」); this.Property(t => t.Family).HasColumnName(「LastName」); 有沒有辦法得到MappedColumn的名字? (例如: PersonMap map = new PersonMap(); var pr = map.Property(p => p.Name); string columnName = pr.HasColumnName; //準確姓名:姓氏 – Saber

+0

@Saber。這不是一個可擴展的解決方案。 – Stumblor