Боюсь, вы не сможете это исправить, не изменив класс ресурса. Я проверил с исходным кодом Fluent NHibernate - вот как выглядит код, который выводит составной идентификатор:
XmlElement element = classElement.AddElement("composite-id");
foreach( var keyProp in keyProperties )
{
keyProp.Write(element, visitor);
}
Чего не хватает, так это атрибута «name», который должен быть установлен в «Key». Без этого атрибут NHibernate возвращается к свойству по умолчанию name = "Id". Поскольку у вашего класса нет свойства Id, NHibernate не знает, что делать, и выдает исключение.
Если вы не можете изменить класс Resource, вам придется использовать отображение hbm для этого класса или создать патч, чтобы свободно использовать nhibernate (возможно, это известная проблема, и кто-то над ней работает - обратитесь к трекеру проблем беглого nhibernate ).