Я в той же ситуации, что и вы. Используя ClassMap до того, как я узнал, вы можете сделать это с помощью Fluent, но я никогда раньше не использовал функцию AutoMapping. Я успешно смог сделать однозначное сопоставление с AutoMapper с помощью IReferenceConvention (см. Предыдущую статью SO post ).
Я столкнулся с той же проблемой, что и вы, где у меня есть отображение один ко многим, с чем у меня сейчас проблема. Есть интерфейс IHasManyConvention, который я начал изучать, но пока мне не повезло.
Если что-то трудно сделать, это не делает его неправильным, сопоставление с интерфейсами вызывающе имеет значение и может быть легко выполнено в исходных файлах сопоставления nHibernate или с помощью файлов сопоставления Fluents ClassMap. Я думаю, что как только люди начнут делать больше с функцией AutoMapping, будет больше постов в блоге.
EDIT
Я нашел временное решение, используя IAutoMappingOverride . Ниже приведен пример того, что вам нужно.
public class RoleAutoMappingOverride : IAutoMappingOverride<Role>
{
public void Override(AutoMapping<Role> mapping)
{
mapping.HasMany<User>( x => x.Users ).KeyColumn( "User_id" );
}
}
EDIT
Мой колледж разработал лучшее решение, которое использует соглашения вместо переопределения. Здесь описывается, как создать отдельный класс, но если вы посмотрите на пост SO, о котором я упоминал ранее, вы увидите, как это можно сделать общим.
public class Foo : IHasManyConvention
{
public void Apply(IOneToManyCollectionInstance instance)
{
if (instance.ChildType == typeof(Role))
{
instance.Relationship.CustomClass<User>();
}
}
}
EDIT
Я превратил этот и другой пост в пост в блоге:
http://bronumski.blogspot.com/2011/01/making-fluent-nhibernate-automapper.html