Жесткая загрузка с использованием Fluent NHibernate / Nhibernate & amp; Автоотображение

var language = navigator.languages && navigator.languages[0] || // Chrome / Firefox
               navigator.language ||   // All browsers
               navigator.userLanguage; // IE <= 10

console.log(language);

Попробуйте шаблон PWA https://github.com/StartPolymer/progressive-web-app-template

23
задан nabeelfarid 29 June 2010 в 16:48
поделиться

4 ответа

Я сам все понял. Ключ должен использовать SetResultTransformer () , передавая объект DistinctRootEntityResultTransformer в качестве параметра. Таким образом, запрос теперь выглядит следующим образом

Session.CreateCriteria(typeof (Node))
   .SetFetchMode( "Etype", FetchMode.Join )
   .SetFetchMode( "Etype.Properties", FetchMode.Join )
   .SetFetchMode( "Etype.Properties.ListValues", FetchMode.Join )
   .SetResultTransformer(new DistinctRootEntityResultTransformer());

Я нашел ответ на свои вопросы по следующим ссылкам:

http://www.mailinglistarchive.com/html/nhusers @ googlegroups.com / 2010-05 / msg00512.html

http://ayende.com/Blog/archive/2010/01/16/eagerly-loading-entity-associations- эффективно-с-nhibernate.aspx

13
ответ дан nabeelfarid 29 June 2010 в 16:48
поделиться

каждое отображение должно иметь ленивую загрузку с

в Node Map:

Map(x => x.EntityType).Not.LazyLoad();

в EnityType Map:

Map(x => x.Properties).Not.LazyLoad();

и так далее ...

Также см. NHibernate Eager, загружающий многоуровневые дочерние объекты для одноразовой загрузки

Добавлено:

Дополнительная информация по Sql N + 1:

http://nhprof.com/Learn/Alerts/SelectNPlusOne

22
ответ дан Community 29 June 2010 в 16:48
поделиться

SetResultTransformer с DistinctRootEntityResultTransformer будет работать только для основного объекта, но коллекции IList будут умножены.

4
ответ дан awattar 29 June 2010 в 16:48
поделиться

У меня получилось что-то вроде этого:

HasMany(x => x.YourList).KeyColumn("ColumnName").Inverse().Not.LazyLoad().Fetch.Join()

Просто убедитесь, что вы выбрали свою сущность так, чтобы избежать дублирования из-за объединения:

session.CreateCriteria(typeof(T)).SetResultTransformer(Transformers.DistinctRootEntity).List<T>();
9
ответ дан Alex 29 June 2010 в 16:48
поделиться
Другие вопросы по тегам:

Похожие вопросы: