2017-03-26 56 views
0

我使用Dapper和Dapper.Contrib來映射數據庫中的對象。從TableAttribute獲取表名Dapper.Contrib

我有一個類名,我爲這個類定義表名,因爲它與實際的類名不同。

類:

[Table("tblUser")] 
public class User 
{ 
    public int Id { get; set; } 
    public string Title { get; set; } 
} 

我怎樣才能得到它被設置表數據註解屬性表名

編輯:

我用下面得到它的工作

var tAttribute = 
    (TableAttribute)typeof(T).GetCustomAttributes(typeof(TableAttribute), true)[0]; 

tableName = tAttribute.Name; 

回答

2

我在一個控制檯應用程序的.NET Framework 4.6.2測試這一點。如果您需要關於該擴展程序的更多信息,請參閱SqlMappperExtensions

namespace ConsoleApp1 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      SqlMapperExtensions.TableNameMapper = TableNameMapper; 
      var name = TableNameMapper(typeof(User)); 
     } 

     private static string TableNameMapper(Type type) 
     { 
      dynamic tableattr = type.GetCustomAttributes(false).SingleOrDefault(attr => attr.GetType().Name == "TableAttribute"); 
      var name = string.Empty; 

      if (tableattr != null) 
      { 
       name = tableattr.Name; 
      } 

      return name; 
     } 
    } 

    [Table("tblUser")] 
    public class User 
    { 
     public int Id { get; set; } 
     public string Title { get; set; } 
    } 
}