powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / FluentNHibernate маппинг на sql запрос
5 сообщений из 5, страница 1 из 1
FluentNHibernate маппинг на sql запрос
    #38521842
Sky Dragon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте.

Допустим, имеется категория. У каждой категории имеется свой список элементов.
Но мне не надо в классе иметь этот список элементов, а надо посчитать суммарную стоимость.
Стоимость считается каким-то SQL запросом. Так вот как это правильно замаппить, чтобы отдельно запрос не выполнять для каждой категории.

Класс категории
Код: c#
1.
2.
3.
4.
5.
6.
    public class CategoryShort
    {
        public virtual int Id { get; set; }
        public virtual string Name { get; set; }
        public virtual int TotalPriceOfAllItems {get; set; }
    }



Fluent маппинг, но без суммарной стоимости.
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
 public class CategoryShortMap : ClassMap<CategoryShort>
    {
        public CategoryShortMap()
        {
            this.Not.LazyLoad();
            Table("Category");
            Id(x => x.Id);
            Map(x => x.Name);
        }
    }



Обращение к БД
Код: c#
1.
2.
3.
4.
5.
6.
7.
        public IEnumerable<CategoryShort> GetAllShort()
        {
            using (var session = NHibernateHelper.SessionFactory.OpenSession())
            {
                return session.CreateCriteria<CategoryShort>().AddOrder(Order.Asc("Name")).List<CategoryShort>();
            }
        }




Так вот можно ли как то прописать в этот запрос еще в дополнение SQL-запрос для заполнения моего TotalPriceOfAllItems ?


Да, можно конечно все полностью вытаскивать чистым SQL типа:

Код: c#
1.
2.
3.
4.
using (var session = NHibernateHelper.SessionFactory.OpenSession())
            {
                var query = session.CreateSQLQuery(@"SELECT ... ");
  var categoriesTmp = query.SetResultTransformer(Transformers.AliasToBean<CategoryTMP>()).List<CategoryTMP>();



Но тут не получалось тоже замаппить(возвращался несгруппированный по категориям список)...
...
Рейтинг: 0 / 0
FluentNHibernate маппинг на sql запрос
    #38523284
SerP1983
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Linq (session.Query) вам в помощь.
...
Рейтинг: 0 / 0
FluentNHibernate маппинг на sql запрос
    #38523647
maratoss
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
FluentNHibernate маппинг на sql запрос
    #38523854
Sky Dragon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SerP1983,
Вроде он тут не поможет. Там же в запросе надо указывать типа Where(e=>e.Name = "бла бла бла...

А мне надо запрос, который вообще берется же из другой таблички.

maratoss
Не совсем то, но навело на то:

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
 public class CategoryShortMap : ClassMap<CategoryShort>
    {
        public CategoryShortMap()
        {
            this.Not.LazyLoad();
            Table("Category");
            Id(x => x.Id);
            Map(x => x.Name);
            Map(x => x.ItemsCount).Formula("Select Count(*) From KindOfItems i Where i.CategoryId = Id");
        }




Но выдает ошибку:
could not execute query
[ SELECT this_.Id as Id1_0_, this_.Name as Name1_0_,
Select Count(*)
From KindOfItems i
Where i.CategoryId = this_.Id as formula0_0_ FROM Category this_ ORDER BY this_.Name asc ]

"as formula0_0_ FROM Category this_" - вот это this_ меня смущает. Смотрел примеры, там вроде должно быть что-то типа:
SELECT
user0_.Id as Id0_0_,
(SELECT
COUNT(*)
FROM
roles r
WHERE
r.user_id = user0_.id) as formula0_0_
FROM
"User" user0_
WHERE
user0_.Id=@p0;

ТО есть параметр. У меня он не появляется (в других запросах появляется типа WHERE user0_.Id=?).
что то здесь не так, но пока не могу понять, что именно
...
Рейтинг: 0 / 0
FluentNHibernate маппинг на sql запрос
    #38524682
SerP1983
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот , например. HQL - это session.CreateQuery
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / FluentNHibernate маппинг на sql запрос
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]