2011-01-15 15 views
8

Akıcı olarak istek başına oturum kullanmaya çalışıyorum. Ben nhibernate config dosyasını kullanır ancak nhibernate yemek kitabından bir "tarifi" takip ediyorum.currentsessioncontext akıcı nhibernate nasıl yapılır?

Neyin daha iyi olduğunu bilmiyorum ama şu anda akıcı yapılandırma ile çalışıyorum çünkü nhibernate config dosyasını akıcı haritalama ve vanilla nhibernate mapping (hbm dosyaları) kullanmak için nasıl ayarlayacağımı bilmiyorum. Eğer Begin_Request görebileceğiniz gibi

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(); 
     } 
    } 
} 

kitaplar öğretici ben kullanımda nhibernate yapılandırma dosyası olmadığı için ben bir hata atıyor Bunu kullanmak Ancak eğer
CurrentSessionContext.Bind(session); 

vardı.

Akıcı yapılandırmayı kullanmak için bunu nasıl değiştirebilirim? Yoksa bu adımı yapmaya bile gerek yok mu? (Yani dahili olarak mı?)

cevap

12

NHibernate'e oturum içeriğini nasıl kullanacağını söylemelisiniz. Aşağıdaki işe yarayabilecek: Bu ilgisiz Ayrıca

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

: Eğer EndRequest üzerinde SessionFactory bertaraf edilmektedir. Bu bir hatadır.

+0

gibi kullanmalıdır ise bir hatadır "Sadece nhibernate yemek kitabında 3.0 bitenleri takip ediyorum. – chobo2

+0

Ah Ne demek istediğini görüyorum. Mevcut oturumu seans fabrikasına (kötü lol) değil, sonlandırmak istedim. – chobo2

+0

demek istediğim buydu. –

0

Projeniz Asp.Net web sitesi (web uygulaması), Global.asax size "EndRequest parçası üzerinde durmak misiniz o

NHibernate.Cfg.Environment.CurrentSessionContextClass

İlgili konular