पर बनाई गई है, मैंने एनएचबीरनेट सत्र फ़ैक्टरी कक्षा लिखी है जिसमें स्थिर निबर्ननेट आईएसशन फैक्ट्री है। इसका उपयोग यह सुनिश्चित करने के लिए किया जाता है कि हमारे पास केवल एक सत्र फैक्ट्री है, और पहली बार ओपनसेशन() को कॉल किया जाता है, मैं एक्ट्यूअल सत्र फैक्ट्री बना देता हूं - अगली बार मैं इसका उपयोग करता हूं और उस पर एक सत्र खोलता हूं। कोड इस तरह दिखता है:सुनिश्चित करें कि एनएचबीर्नेट सत्र फ़ैक्टरी केवल
public class NhibernateSessionFactory : INhibernateSessionFactory
{
private static ISessionFactory _sessionFactory;
public ISession OpenSession()
{
if (_sessionFactory == null)
{
var cfg = Fluently.Configure().
Database(SQLiteConfiguration.Standard.ShowSql().UsingFile("Foo.db")).
Mappings(m => m.FluentMappings.AddFromAssemblyOf<MappingsPersistenceModel>());
_sessionFactory = cfg.BuildSessionFactory();
BuildSchema(cfg);
}
return _sessionFactory.OpenSession();
}
private static void BuildSchema(FluentConfiguration configuration)
{
var sessionSource = new SessionSource(configuration);
var session = sessionSource.CreateSession();
sessionSource.BuildSchema(session);
}
}
अब मुझे कोई समस्या है। मेरा आवेदन क्लाइंट और सर्वर के बीच विभाजित है। Nhibernate सामान सर्वर की तरफ है। स्टार्टअप पर मेरा क्लाइंट और सर्वर कुछ सेवाओं के माध्यम से डेटाबेस तक पहुंचना चाहता है जो NhibernateSessionFactory का उपयोग करेगा। परिणाम क्लाइंट से अनुरोध आने से पहले _sessionFactory बनाया गया है या नहीं, इस दौड़ की शर्त है। यदि यह नहीं है तो यह असफल हो जाएगा ..
मुझे लगता है कि मुझे निबर्ननेट सत्र कारखाने में कुछ प्रकार की कतार या प्रतीक्षा तंत्र की आवश्यकता है, लेकिन मुझे यकीन नहीं है कि क्या करना है। किसी को भी पहले एक ही समस्या थी? सबसे अच्छा समाधान क्या है?
धन्यवाद! उचित लगता है। मैंने बस म्यूटेक्स का उपयोग करके एक समाधान जोड़ा। लेकिन मुझे इसके बजाय ताला का उपयोग करना चाहिए? – stiank81
लेकिन अगर मुझे एक साथ कई डेटाबेस कनेक्शन की आवश्यकता है तो क्या होगा? वर्तमान में मुझे कई सत्र कारखाने बनाने के लिए अन्य कामकाज नहीं पता है ... – JustAMartin
आप इसे नियंत्रकों में कैसे कार्यान्वित करते हैं? – Chazt3n