В NHibernate как найти имя свойства id постоянного класса POCO, зная его тип? - PullRequest
2 голосов
/ 10 марта 2011

Как я могу получить имя свойства id (первичного ключа) для моего класса сущности, используя метаданные класса NHibernate?Предположим, у меня есть следующий класс, могу ли я найти имя и тип свойства для идентификатора typeof(TEntity)?

public abstract class Repository<TKey, TEntity> : IRepository<TKey, TEntity>
    where TEntity : class
{
    private static string PrimaryKeyName;
    // ...

    protected ISession Session { ... }
}

Обычно имя свойства - Id, но в некоторых случаях оно отличается,Я использую .hbm.xml отображений.

Session.SessionFactory.GetClassMetadata(typeof(TEntity)).IdentifierPropertyName

предоставляет эту информацию?

1 Ответ

5 голосов
/ 10 марта 2011

Да

Session.SessionFactory.GetClassMetadata(typeof(TEntity)).IdentifierPropertyName 

- это имя свойства идентификатора.

Существует также IdentifierType, который является NH IType идентификатора. Вы можете использовать SetIdentifier и GetIdentifier для чтения и записи значений в и из идентификатора.

...