Как я могу использовать Fluent NHibernate Automapping с несколькими списками одного типа в сущности?

Похоже, что NHibernate не может автоматизировать более одного IList данного типа в сущности.

Рассмотрим следующие две сущности (на основе примера кода examples.FirstProject, включенного в исходный код Fluent NHibernate).

public class Employee
{
    public virtual int Id { get; private set; }
    public virtual string FirstName { get; set; }
    public virtual string LastName { get; set; }
}

public class Store
{
    public virtual int Id { get; private set; }
    public virtual IList<Employee> Staff { get; set; }
    public virtual IList<Employee> Managers { get; set; }
}

Кажется, это совершенно правильная объектная модель - в каждом магазине работают несколько сотрудников и несколько сотрудников-менеджеров.

Но когда я выполняю автоматическую проверку, списки сотрудников и менеджеров сохраняются в таблице Employee с одинаковым внешним ключом.

Employee Table

Id FirstName LastName Store_id 
3  Daisy     Harrison   1 
4  Jack      Torrance   1 
5  Sue       Walkters   1 
6  Tom       Tommorow   1 
7  Dick      Diggler    1 

В результате получается, что когда данные считываются из базы данных, списки сотрудников и менеджеров заполняютсякаждый строка в таблице.

Для меня это похоже на ошибку в Automapping, но я довольно новичок в NHibernate в любой форме и пока не до конца знаю, что это за ограничения.

В любом слючае,как я могу заставить NHibernate рассматривать два списка как разные?

Если возможно, я был бы признателен за фрагмент кода Automapping, который непосредственно обращается к предоставленному образцу кода (например, что-то вроде «поместите это точное переопределение в раздел .Mappings вашей CreateSessionFactory»).

Это потому, что я только немного знаком с Automapping, и совсем не знаком со старыми способами ведения дел, а это значит, что я пока не могу «хорошо заполнить пробелы».

Но если бы у вас было только время, чтобы указать мне правильное направление, это тоже было бы полезно.

Вот мой код CreateSessionFactory, чтобы дать некоторый контекст:

    private static ISessionFactory CreateSessionFactory()
    {
        ISessionFactory sessionFactory = null;

        const string autoMapExportDir = "AutoMapExport";
        if( !Directory.Exists(autoMapExportDir) )
            Directory.CreateDirectory(autoMapExportDir);

        try
        {
            var autoPersistenceModel = 
                AutoMap.AssemblyOf<Product>()
                        .Where(t => t.Namespace == "Examples.FirstProject.Entities")
                        .Conventions.Add( DefaultCascade.All() )
                ;

            sessionFactory = Fluently.Configure()
                .Database(SQLiteConfiguration.Standard
                              .UsingFile(DbFile)
                              .ShowSql()
                         )
                .Mappings(m => m.AutoMappings.Add(autoPersistenceModel)
                                             .ExportTo(autoMapExportDi,r)
                         )
                .ExposeConfiguration(BuildSchema)
                .BuildSessionFactory()
                ;
        }
        catch (Exception e)
        {
            Console.WriteLine(e);
        }

        return sessionFactory;
    }

Ответы на вопрос(1)

Ваш ответ на вопрос