Как получить имя колонки таблицы на которую мапится свойство NHibernate класса?

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");

0 комментариев

Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.