У меня есть сайт веб-форм, который использует NHibernate для подключения к базе данных MSSQL.Производительность и масштабируемость NHibernate
Я использую следующий класс для создания SessionFactory и получить текущую сессию использовать:
internal static class SessionManager
{
static readonly Configuration Configuration = new Configuration().Configure();
internal readonly static ISessionFactory SessionFactory = Configuration.BuildSessionFactory();
internal static ISession CurrentSession { get { if (!CurrentSessionContext.HasBind(SessionFactory))CurrentSessionContext.Bind(SessionFactory.OpenSession()); return SessionFactory.GetCurrentSession(); } }
}
И это пример того, как я использую предыдущий:
public abstract class Repository<TEntity>
{
protected internal ISession Session { get { return SessionManager.CurrentSession; } }
public IQueryable<TEntity> AllItems { get { return Session.Query<TEntity>(); } }
}
все работает отлично, хотя я считаю, что делаю что-то очень плохое с точки зрения производительности и масштабируемости, но я не вижу, что.
Может ли кто-нибудь указать мне, что есть и/или предложить лучший способ справиться с этим?
Заранее благодарен!
Есть другие способы, чтобы организовать ее, что я считаю лучше (личные предпочтения). Но нет ничего плохого в вашем решении с точки зрения производительности. – Andre