Как я могу использовать 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 Staff { get; set; }
public virtual IList 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, который напрямую обращается к примеру кода Iмы предоставляем (например, что-то вроде "поместите это точное переопределение в раздел .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()
.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(autoMapExportDir)
)
.ExposeConfiguration(BuildSchema)
.BuildSessionFactory()
;
}
catch (Exception e)
{
Console.WriteLine(e);
}
return sessionFactory;
}