在NHibernate中,如何找到持久POCO类的id属性的名称,知道它的类型?

Vas*_*sea 2 nhibernate nhibernate-mapping

如何使用NHibernate类元数据获取实体类的id(主键)属性的名称?假设我有以下类,我可以找到ID的属性名称和类型typeof(TEntity)吗?

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

    protected ISession Session { ... }
}
Run Code Online (Sandbox Code Playgroud)

通常,属性的名称是Id,但在少数情况下,它是不同的.我正在使用.hbm.xml映射.是否

Session.SessionFactory.GetClassMetadata(typeof(TEntity)).IdentifierPropertyName
Run Code Online (Sandbox Code Playgroud)

提供这些信息?

Ste*_*ger 5

Session.SessionFactory.GetClassMetadata(typeof(TEntity)).IdentifierPropertyName 
Run Code Online (Sandbox Code Playgroud)

是标识符的属性名称.

还有IdentifierType,这是IType标识符的NH .您可以使用SetIdentifierGetIdentifier从标识符读取和写入值.