Как запросить вложенный список с помощью лямбда-выражения

SessionFactory NHIBERNATE является дорогой операцией, таким образом, хорошая стратегия к, создает Singleton, которая гарантирует, что существует ТОЛЬКО ОДИН экземпляр SessionFactory в памяти:

   public class NHibernateSessionManager
    {
        private readonly ISessionFactory _sessionFactory;

        public static readonly NHibernateSessionManager Instance = new NHibernateSessionManager();

        private NHibernateSessionManager()
        {
            if (_sessionFactory == null)
            {
                System.Diagnostics.Debug.WriteLine("Factory was null - creating one");
                _sessionFactory = (new Configuration().Configure().BuildSessionFactory());
            }
        }

        public ISession GetSession()
        {
            return _sessionFactory.OpenSession();
        }

        public void Initialize()
        {
            ISession disposeMe = Instance.GetSession();
        }
    }

Тогда в Вашем Глобальном. Asax Application_Startup, можно инициализировать его:

protected void Application_Start()
{
    NHibernateSessionManager.Instance.Initialize();
}
20
задан Flo 26 October 2009 в 20:31
поделиться

2 ответа

Это может работать (не проверено) ...

var clubs = ClubRepository.Where(c=>c.MemberShips.Any(m=>m.User.Age > 45));
27
ответ дан 29 November 2019 в 23:37
поделиться

Вот один из способов сделать это:

var clubs = clubRepository
    .SelectMany(c => c.Memberships, (c, m) => new { c, m })
    .Where(x => x.m.User.Age > 45)
    .Select(x => x.c);
17
ответ дан 29 November 2019 в 23:37
поделиться