2017-03-26 31 views
0

私はDapperとDapper.Contribを使ってデータベースからオブジェクトをマッピングしています。TableAttribute Dapper.Contribからテーブル名を取得

実際のクラス名と異なるため、このクラスのテーブル名を定義するクラス名があります。

クラス:

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

はどのようにして表データ注釈属性を設定されているテーブル名を得ることができますか?

EDIT:

私は、コンソールアプリケーションの.NET Framework 4.6.2でこれをテストし、それが

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

tableName = tAttribute.Name; 

答えて

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; } 
    } 
} 
関連する問題