2011-01-15 18 views
8

मैं प्रति अनुरोध सत्र के साथ धाराप्रवाह का उपयोग करने की कोशिश कर रहा हूं। मैं nhibernate cookbook से "नुस्खा" का पालन कर रहा हूं हालांकि यह nhibernate config फ़ाइल का उपयोग करता है।currentsessioncontext धाराप्रवाह 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 में देख सकते हैं किताबें ट्यूटोरियल

CurrentSessionContext.Bind(session); 

था लेकिन अगर मैं इस यह एक त्रुटि फेंकता का उपयोग के बाद से मैं उपयोग में nhibernate कॉन्फ़िग फ़ाइल नहीं है।

तो मैं धाराप्रवाह विन्यास का उपयोग करने के लिए इसे बदल सकता हूँ? या मैं भी (यानी वह आंतरिक रूप से किया जाता है?) इस कदम क्या करने की जरूरत नहीं है?

उत्तर

12

आप NHibernate बताने के लिए सत्र संदर्भ संभाल करने की जरूरत है। निम्नलिखित काम कर सकते हैं:

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

इसके अलावा, इस से संबंधित नहीं: आप EndRequest पर SessionFactory निपटान कर रहे हैं। यह एक त्रुटि है।

+0

की तरह इस्तेमाल करना चाहिए है, तो आप "EndRequest की ओर से विस्तृत कृपया एक त्रुटि है "मैं सिर्फ निबर्ननेट कुकबुक 3.0 में क्या किया जाता है उसका पालन कर रहा हूं। – chobo2

+0

आह मैं देखता हूं कि आपका क्या मतलब है। हां मेरा मतलब है कि मौजूदा सत्र को समाप्त करना सत्र सत्र नहीं है (जो खराब होगा)। – chobo2

+0

मेरा यही मतलब था। –

0

अपनी परियोजना Asp.Net वेब साइट (नहीं वेब अनुप्रयोग), Global.asax में आपको लगता है कि

NHibernate.Cfg.Environment.CurrentSessionContextClass

संबंधित मुद्दे