2011-01-15 8 views
8

リクエストごとにセッションに流暢に使用しようとしています。私はnhibernate cookbookの "recipe"に従っていますが、nhibernate設定ファイルを使用しています。currentessioncontext流暢なnhibernateそれを行う方法?

私は流暢マッピングとバニラnhibernateマッピング(hbmファイル)を使用するようにnhibernate設定ファイルを設定する方法がわからないので、私は流暢な設定に固執しています。

namespace Demo.WebUI 
{ 
    public class MvcApplication : NinjectHttpApplication 
    { 
     public static ISessionFactory SessionFactory { get; private set; } 

     protected override void OnApplicationStarted() 
     { 
      SessionFactory = Fluently.Configure() 
       .Database(MsSqlConfiguration.MsSql2008.ConnectionString(
        c => c.FromConnectionStringWithKey("test"))) 
       .Mappings(m => m.FluentMappings 
        .AddFromAssemblyOf 
        <Demo.Framework.Data.NhibernateMapping.UserMap>()) 
       .ExposeConfiguration(BuidSchema) 
       .BuildSessionFactory(); 
     } 

     protected void Application_BeginRequest(object sender, EventArgs e) 
     { 
      var session = SessionFactory.OpenSession(); 
      //CurrentSessionContext.Bind(session); 
     } 

     protected void Application_EndRequest(object sender, EventArgs e) 
     { 
      //var session = CurrentSessionContext.Unbind(SessionFactory); 
      SessionFactory.Dispose(); 
     } 
    } 
} 

あなたはBEGIN_REQUESTで書籍チュートリアルを見ることができるように、私はこれを使用している場合、私は、使用中のNHibernateの設定ファイルを持っていないので、

CurrentSessionContext.Bind(session); 

は、しかし、それはエラーがスローでした。

どのようにして流暢な設定を使用するように変更しますか?または、このステップを実行する必要はありませんか?(つまり、内部的に行われていますか?)

答えて

12

NHibernateにセッションコンテキストの処理方法を伝える必要があります。次のように動作する可能性があります。

Fluently.Configure() 
     ... 
     .ExposeConfiguration(cfg => cfg.SetProperty(
             Environment.CurrentSessionContextClass, 
             "web") 

また、EndRequestにSessionFactoryを配置していません。それは誤りです。

+0

のように使用する必要がありますが、EndRequestの「の部分について詳しく説明していただけますエラーです "私はnhibernate cookbook 3.0で行われていることにちょうど従っています。 – chobo2

+0

ああ、私はあなたが意味するものを参照してください。ええと、私は現在のセッションを終了するつもりはありませんでした(それは悪いLOLになるでしょう)。 – chobo2

+0

それは私が意味するものです。 –

0

プロジェクトがAsp.Netウェブサイト(ないウェブアプリケーション)である場合には、Global.asaxの中で、あなたがその

NHibernate.Cfg.Environment.CurrentSessionContextClass