#nhibernate #fluent-nhibernate #automapping
#nhibernate #fluent-nhibernate #автоматическое отображение
Вопрос:
Я использую автоматическое отображение с flent-hibernate для отображения. Я хотел бы, есть ли способ установить для ссылочного свойства значение «отложенная загрузка» с помощью IConvention или аналогичного, а не использовать отдельный класс отображения?
Комментарии:
1. Разве ленивая загрузка не используется по умолчанию?
2. да, я полагаю, что так. но тогда будут моменты, когда нам нужно будет включать / выключать отложенную загрузку.
Ответ №1:
во-первых, я считаю, что lazyloading — это поведение по умолчанию.
вы можете протестировать это довольно легко-
[TestMethod]
public void TestLazyLoading()
{
Airport firstObject = null;
using (ISession session = this.SessionFactory.OpenSession())
{
using (ITransaction transaction = session.BeginTransaction())
{
ObjectDAO dao = new ObjectDAO(session, CurrentUser);
firstObject = dao.GetObject();
transaction.Commit();
}
}
Assert.IsFalse(NHibernateUtil.IsInitialized(firstObject.Children));
}
если вы хотите явно указать lazyloading / нетерпеливый, используйте следующее в вашем классе MappingOverride:
mapping.HasMany(x => x.Employees)
//.Not
.LazyLoad()
;
Ответ №2:
Для настройки автоматических подключений вы можете использовать IAutoMappingOverride<SomeEntity>
. Вы можете изменить там точное свойство, которое вам нужно