Só para constar consegui.
Segue o código para recuperar as propriedades quando for um CompositeID
public static IList<PropertyInfo> GetIdentifier(this ISessionFactory sessionFactory, Type entityType)
{
IList<PropertyInfo> properties = new List<PropertyInfo>();
String entityName = (sessionFactory as ISessionFactoryImplementor).TryGetGuessEntityName(entityType);
AbstractEntityPersister persister = (sessionFactory as ISessionFactoryImplementor).TryGetEntityPersister(entityName) as AbstractEntityPersister;
if (persister == null)
return properties;
if (persister.IdentifierPropertyName != null)
{
properties.Add(entityType.GetProperty(persister.IdentifierPropertyName));
return properties;
}
if (persister.IdentifierType is IAbstractComponentType)
{
IAbstractComponentType componentId = (IAbstractComponentType)persister.IdentifierType;
foreach (string name in componentId.PropertyNames)
{
properties.Add(entityType.GetProperty(name));
}
}
return properties;
}