2010-07-24 5 views
0

난 그냥 자 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>(); 

을 옳지 않은가?

답변

0

CreateCriteria는 인스턴스를 검색 할 모델 개체 이름을 지정해야합니다. 모델 개체 유형 이름이 누락 된 것 같습니다. 더 이런 식으로 뭔가를 시도 :

List<YourModelObject> results = session.CreateCriteria<YourModelObject>() 
     .List<YourModelObject>(); 

실제로 Ayende의 NHProfiler 사용을 고려 데이터베이스로 전송되고 있는지 확인하려면 - 그것은 편리 이후에 올 것이다 당신의 더 복잡한 기준 쿼리 또는 HQL 실제로시키는 u 리 것을 볼 때 ...

+0

시도해 본 결과 아무 것도 변경되지 않았습니다. return Session.CreateCriteria () .List (); 필자도 NHProfiler를 사용해 보았습니다 ...하지만 내 프로그램을 실행할 때 어떤 세션도 나타나지 않는 것 같습니다 ... 원래 게시에 포함 된 NHibernateSessionPerRequest 코드가 어딘가에 잘못 생각했다고 생각합니다 ... .Mappings (m => m.FluentMappings.AddFromAssemblyOf ()의 값이어야합니다. – Gary

0

알았어 ... 알 수없는 이유로 프로젝트에 포함되지 않은 것을 알지 못했지만 ... 다시 포함 시켰습니다. 모두 좋았습니다!

이상한 방법으로 오류를 던지지 못했습니다.

관련 문제