Как установить свойство как lazyloading в fluent-hibernate с автоматическим отображением?

#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> . Вы можете изменить там точное свойство, которое вам нужно