2017-03-26 2 views
0

J'utilise Dapper et Dapper.Contrib pour mapper des objets de la base de données.Obtenir le nom de la table à partir de TableAttribute Dapper.Contrib

J'ai un nom de classe où je définis le nom de la table pour cette classe, car il est différent du nom de classe réel.

Classe:

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

Comment puis-je obtenir le nom de la table qui est défini attribut annotation de données de tableau?

EDIT:

Je l'ai utilisé ci-dessous pour le faire fonctionner

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

tableName = tAttribute.Name; 

Répondre

2

Je l'ai testé cela dans une application console .NET Framework 4.6.2. Reportez-vous au SqlMappperExtensions si vous souhaitez plus d'informations sur cette extension.

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; } 
    } 
}