Форум программистов, компьютерный форум, киберфорум
C#: Базы данных, ADO.NET
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/5: Рейтинг темы: голосов - 5, средняя оценка - 5.00
9 / 9 / 6
Регистрация: 04.12.2011
Сообщений: 137
1

NHibernate. Материализация данных

19.04.2017, 12:50. Показов 1048. Ответов 5

Суть проблемы изложена тут
http://stackoverflow.com/quest... q-analogue


I have old code to support. NHibernate is used to query DB. There are NHibernate LINQ queries like IQueryOver.Where and others. It works fine but I want to use these queries for local sequences. In Microsoft LINQ there is the method Enumerable.AsQueryable. Is there any analogue in NHibernate LINQ?

So I have this.

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
    private IQueryOver<Package> GetPackages(GetPackageMessage message)
            {
                var query = SessionFactory.Current.QueryOver<Package>();
 
                if (message.TzapUtc.Use)
                {
                   query = query.Where(x => x.Tzap_utc >= message.TzapUtc.ValueBegin);
 
                }            
                if (message.Iik.Use)
                {
                    query = use ? query.Where(x => x.Iik == message.Iik.Value);
                }
}
I need to apply all these Where to my local collection IEnumerable< Package>

instead of collection got from DB.
Кратко: есть последовательность выражений типа Where( ...) . Это не Enumerable Where а именно родные NHibernate.Linq. Мне хочется разделить на
запрос к БД с таким фильтром из Where
и фильтрация локальной коллекции IEnumerable<Package>.
В LINQ to SQL локальную коллекцию можно сделать .AsQuaryable и использовать на ней LINQ to SQL.
Вот пример из C# in a nutshell
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
IQueryable<Product> FilterSortProducts (IQueryable<Product> input)
{
return from p in input
where ...
order by ...
select p;
}
void Test()
{
var dataContext = new NutshellContext ("connection string");
Product[] localProducts = dataContext.Products.ToArray();
var sqlQuery = FilterSortProducts (dataContext.Products);
var localQuery = FilterSortProducts (localProducts.AsQueryable());
...
}
Код на NHibernate достался в наследство, в NHibernate почти не разбираюсь
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
19.04.2017, 12:50
Ответы с готовыми решениями:

Ошибка сохранения данных NHibernate
Добрый день! Есть два класса &quot;Месячный показатель&quot; и &quot;Тип плана&quot; public class MonthValue ...

NHibernate MySql
Здравствуйте, подскажите в чем ошибка Пытаюсь подключится к MySql sessionFactory =...

NHibernate mapping
Доброго времени суток! Есть база данных и соответственно мое приложение конструкцию взял из...

Nhibernate хранимые процедуры
Доброго времени суток Мне нужно создать хранимую процедуру в базе данных при маппинге процедура...

5
Администратор
Эксперт .NET
13986 / 11347 / 4594
Регистрация: 17.03.2014
Сообщений: 22,937
Записей в блоге: 1
19.04.2017, 13:46 2
koperfild,
C#
1
var query = SessionFactory.Current.QueryOver<Package>().List<Package>();
0
9 / 9 / 6
Регистрация: 04.12.2011
Сообщений: 137
19.04.2017, 14:47  [ТС] 3
А можешь немного пояснить твой ответ.
В моём понимании будет отдельный метод, принимающий что-то типа IQueryable как в LINQ и будут передаваться либо запрос к БД (IQueryOver) либо IEnumerable<Package> приведённый к IQuearyable
0
Администратор
Эксперт .NET
13986 / 11347 / 4594
Регистрация: 17.03.2014
Сообщений: 22,937
Записей в блоге: 1
19.04.2017, 14:53 4
koperfild, метод QueryOver<T>() возвращает IQueryOver<T> который можно считать аналогом IQueryable<T>. Его и передавай если нужен универсализм.
0
9 / 9 / 6
Регистрация: 04.12.2011
Сообщений: 137
19.04.2017, 15:59  [ТС] 5
А как привести мою локальную коллекцию IEnumerable<T> к IQueryOver<T>
0
Администратор
Эксперт .NET
13986 / 11347 / 4594
Регистрация: 17.03.2014
Сообщений: 22,937
Записей в блоге: 1
20.04.2017, 11:52 6
koperfild, я тоже не спец по NHibernate. Не знаю можно ли так делать.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
20.04.2017, 11:52

SQL-представления (View) в NHibernate
Доброго времени суток! Подскажите можно ли в NHibernet создать класс сущность для...

Формирование классов сущностей в NHibernate
Доброго времени суток! Ребята, скажите можно ли в C# в VS 2017 сформировать классы сущности с...

ОРМ NHibernate: не сохраняются данные в БД
Здравствуйте! Использую ОРМ NHibernate. Программа выполняется без ошибок, однако изменения в базу...

Доступ к данным через NHibernate
Здравствуйте! Никак не разберусь с принципом работы данной ОРМ. Задача: получить доступ к данным...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru