Имам стар код за поддръжка. NHibernate се използва за търсене на DB. Има queries на NHibernate LINQ като IQueryOver.Where
и други. Тя работи добре, но искам да използвам тези заявки за местни последователности. В Microsoft LINQ има методът Enumerable.AsQueryable
, Има ли някакъв аналог в NHibernate LINQ?
Така че имам това.
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);
}
}
Трябва да се прилагат всички тези Къде да моята локална колекция IEnumerable <пакет>
вместо да се събира от DB.
Отговори:
1 за отговор № 1queryover* няма нищо общо с въпросите на Linq. Това не включва никакви въпроси. По този начин не можете да прилагате заявка на QueryOver върху заявка. QueryOver е силно написан вариант на nhibernate-критерии, използвайки ламбда за постигане на силно типизиране.
Ако искате да използвате Linq с NHibernate, използвайте LINQ към nhibernate вместо.
using NHibernate.Linq;
...
var query = SessionFactory.Current.Query<Package>();
Тогава ще можете да замените вашите query
с възможност за запитване, получена от събиране в паметта, като се използва Linq Enumerable.AsQueryable
метод.
*: или nhibernate-queryover, предстои гласуване на синоним.