난 그냥 자 NHibernate (능통 자 NHibernate)에 내 응용 프로그램 후킹에보고 한 데이터베이스를 조회하지하지만 난 사람들이 한 일을 따라하는 것을 시도했다유창함 NHibernate에 제대로
몇 가지 어려움을 ... 가진이를 발견하고 :
public class NHibernateSessionPerRequest : IHttpModule
{
private static readonly ISessionFactory _sessionFactory;
static NHibernateSessionPerRequest()
{
_sessionFactory = CreateSessionFactory();
}
public void Init(HttpApplication context)
{
context.BeginRequest += BeginRequest;
context.EndRequest += EndRequest;
}
public static ISession GetCurrentSession()
{
return _sessionFactory.GetCurrentSession();
}
public void Dispose() { }
private static void BeginRequest(object sender, EventArgs e)
{
ISession session = _sessionFactory.OpenSession();
session.BeginTransaction();
CurrentSessionContext.Bind(session);
}
private static void EndRequest(object sender, EventArgs e)
{
ISession session = CurrentSessionContext.Unbind(_sessionFactory);
if (session == null) return;
try
{
session.Transaction.Commit();
}
catch (Exception)
{
session.Transaction.Rollback();
}
finally
{
session.Close();
session.Dispose();
}
}
private static ISessionFactory CreateSessionFactory()
{
string connString = "AV8MediaUser";
FluentConfiguration configuration = Fluently.Configure()
.Database(MsSqlConfiguration.MsSql2008.ShowSql().ConnectionString(
x => x.FromConnectionStringWithKey(connString)))
.ExposeConfiguration(
c => c.SetProperty("current_session_context_class", "web"))
.Mappings(m => m.FluentMappings.AddFromAssemblyOf<Category>());
return configuration.BuildSessionFactory();
}
}
하지만 난 그것을 통해 그것을 실행할 때 올바르게 데이터베이스에 연결하는 것 같다하지만 쿼리 실행 나던 : 내가 뭔가 STUP을하고 있는가
return Session.CreateCriteria<Category>()
.List<Category>();
을 옳지 않은가?
시도해 본 결과 아무 것도 변경되지 않았습니다. return Session.CreateCriteria() .List (); 필자도 NHProfiler를 사용해 보았습니다 ...하지만 내 프로그램을 실행할 때 어떤 세션도 나타나지 않는 것 같습니다 ... 원래 게시에 포함 된 NHibernateSessionPerRequest 코드가 어딘가에 잘못 생각했다고 생각합니다 ... .Mappings (m => m.FluentMappings.AddFromAssemblyOf ()의 값이어야합니다. –
Gary