How to Get Field's Name from property?
Понадобилось мне получить в runtime имя колонки таблицы на которую мапится NHibernate объект. Вот и наваял хелпер для этого.
public class NHibernateHelper
{
private ISessionFactory _factory;
/// <summary>
/// Конструктор
/// </summary>
/// <param name="factory"></param>
public NHibernateHelper(ISessionFactory factory)
{
if (factory == null) throw new ArgumentNullException("factory");
_factory = factory;
}
/// <summary>
/// Метод возвращает название колонки таблицы на которую мапится свойство
/// </summary>
/// <typeparam name="T">NHibernate класс</typeparam>
/// <param name="propertyName">Имя свойства</param>
/// <returns>Имя колонки таблицы</returns>
public string TableColumn<T>(string propertyName) where T: class
{
SingleTableEntityPersister persister = (SingleTableEntityPersister)_factory.GetClassMetadata(typeof(T)); ;
return persister.GetPropertyColumnNames(propertyName)[0];
}
}
Пример использования
Helpers.NHibernateHelper entityHelper = new Helpers.NHibernateHelper(Domain.SessionFactory);
entityHelper.TableColumn<DocumentType>("FormatSerNum");