Сначала кто-нибудь еще пытается попасть на forum.hibernate.org. Я пытался какое-то время. Не могу поверить в это.Nhibernate - Загрузка объекта с помощью коллекции HasMany в веб-приложении
Я новичок в NHibernate. Полегче.
У меня есть приложение MVC, и у меня есть объект, называемый Рецепт , и у него есть коллекции HasMany. Комментарии, Компоненты и изображения.
В действии контроллера MVC я загружаю первые 20 рецептов для загрузки на моей домашней странице.
Я использую следующий HQL для этого. Я хочу предварительно выбрать изображения , чтобы я мог отобразить первый. Но мой первый рецепт имеет 3 изображения, поэтому результат запроса состоит из 3 строк, загруженных для одного рецепта.
string sql = "from Recipe r " +
"left join fetch r.Images " +
"inner join fetch r.User " +
"where r.Completed!=0";
IList<Recipe> recipes = (IList<Recipe>)session.CreateQuery(sql)
.SetMaxResults(20)
.List<Recipe>();
Какой метод я использую для загрузки первых 20 рецептов с загруженными изображениями ??? I STRESS Я хочу, чтобы предварительная выборка изображений не была ленивой, это потому, что список загружается в действие контроллера, поэтому изображения не могут быть загружены, когда я перечисляю их в своем пользовательском элементе управления.
Malcolm
Вы уверены, что это работает? Держу пари, что нет. Это соединения, которые не позволят правильно подсчитать количество строк. (Я не знаю решение, хотя.) – Rashack
Это действительно работает. Благодаря! – Malcolm
Дублированные строки поступают из левого соединения. NHibernate использует первичный ключ модели Рецепт для фильтрации повторяющихся строк при установке трансформатора DistinctRootEntity. Имейте в виду, что фильтрация выполняется в памяти после того, как строки извлекаются, а не на уровне базы данных. –