2015-10-29 3 views
2

У меня есть ClassMap и сущность. В коде я хотел бы получить имена столбцов для свойств в сущности. Есть идеи?NHibernate ClassMap получить имя столбца для свойства

public class AccountToDepotMap : ClassMap<AccountToDepot> 
{ 
    public AccountToDepotMap() 
    { 
     Table("COPS_WPA_ACCOUNT_DEPOT"); 
     Id(t => t.RecId, "REC_ID"); 
     Map(t => t.RecordDate, "REC_DATE"); 
     Map(t => t.DepotId, "WPA_DEPOT_ID"); 
     Map(t => t.AccountId, "WPA_ACCOUNT_ID"); 
     Map(t => t.IsActive, "ISACTIVE").CustomType<YesNoType>(); 
    } 
} 

public class AccountToDepot 
{ 
    public virtual long RecId { get; set; } 
    public virtual DateTime RecordDate { get; set; } 
    public virtual string DepotId { get; set; } 
    public virtual string AccountId { get; set; } 
    public virtual bool IsActive { get; set; } 
} 

Я хотел бы спросить о собственности DepotId и результат будет WPA_DEPOT_ID.

ответ

2

Существует глубокий обзор:

Exploring nhibernate mapping

И простой фрагмент кода здесь

How do you get the database column name out of an auditing event listener in NHibernate

как получить в стойкая бактерия:

var entityType = typeof(TEntity); 
var factory = ... // Get your ISessionFactory 
var persister = factory.GetClassMetadata(entityType) as AbstractEntityPersister; 

который может быть позже рейтинг

// the set of Properties 
var propertyNameList = persister.PropertyNames; 

// here we get all the settings for remaining mapped properties 
foreach (var propertyName in propertyNameList) 
{ 
    ... 
1

с использованием кода выше

Это работает в моем случае

List<string> columns = new List<string>(); 
     for (int i = 0; i < persister.PropertyNames.Count(); i++) 
     { 
      if (persister.GetPropertyColumnNames(i).Count() > 0) 
      { 
       columns.Add(persister.GetPropertyColumnNames(i).ToList().First()); 
      } 
     }