2009-06-01 22 views
6

निहिरनेट का उपयोग करके, मैं असामान्य पढ़ने के लिए लेनदेन स्तर कैसे सेट कर सकता हूं?nHibernate का उपयोग करके, मैं असामान्य कैसे पढ़ सकता हूं?

एसक्यूएल के साथ, मैं आमतौर पर मेरी संग्रहीत प्रक्रिया की शुरुआत में लेनदेन स्तर निर्धारित करता हूं या इनलाइन (एनओएलओकेके) का उपयोग करता हूं।

+0

जो भी आप कर रहे हैं, असीमित पढ़ना वास्तव में परेशानियों के लिए पूछ रहा है। मैंने इसका उपयोग करने का वास्तविक कारण कभी नहीं देखा है। वास्तव में लेनदेन अलगाव अक्षम करने वाले अनुप्रयोग लेनदेन का सही ढंग से उपयोग नहीं कर रहे हैं। –

+1

थोड़ा सा डीबीए मिथक है। यह डिज़ाइन विकल्प है और सभी डिज़ाइन विकल्पों को आपके द्वारा संचालित डोमेन पर आधारित होना चाहिए। बुनियादी छोटी से मध्यम वेब प्रोजेक्ट्स और क्लाइंट ऐप्स (जो मुझे लगता है कि लोक कार्य का भारी बहुमत है) के लिए यह संभवतः सही काम है। निर्णय लागत बनाम जोखिम है, वास्तविक समय के वातावरण में ट्रांजैक्शन चल रहा है-गंदे-पढ़ने के साथ कम मानक है। विशाल ईकॉमर्स साइट्स (जैसे eBay) आरटी ऐप्स के साथ कई डिज़ाइन फैसले भी साझा करेगी, लेनदेन के स्तर इतने अधिक हैं कि उनका उपयोग करके बहुत अधिक जोखिम हो। रोलबैक की लागत आपको खराब कर देगी। – Vman

+0

मार्टिन फाउलर ने यहां टिप्पणी की: http://martinfowler.com/bliki/Transactionless.html – Vman

उत्तर

3

According to the documentation, आप इसे hibernate.connection.isolation के माध्यम से सेट कर सकते हैं। यदि आपको अधिक सटीक नियंत्रण की आवश्यकता है, तो NHibernate की pessimistic locking तंत्र देखें।

3

आप निम्न चरणों का उपयोग करके nolock में लाइन nhibernate साथ SQLs उपयोग कर सकते हैं:

<sql-query name="PersonList"> 
return alias="person" class="Person"> 
SELECT * FROM Person WITH(nolock) 
<sql-query> 
  • उपयोग AddXmlFile(hbm file path) निम्नलिखित nhibernate सत्र बनाने के दौरान साथ

    1. HBM फ़ाइल बनाएँ।

    2. DBSession.GetNamedQuery("PersonList") का उपयोग व्यक्तियों की सूची प्राप्त करें।

  • 0

    यह मेरे लिए काम किया (एसक्यूएल सर्वर विशिष्ट)

    IDbCommand NHCommand; 
    
        NHCommand= NHSession.Connection.CreateCommand(); 
    
        NHCommand.CommandText= "SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED"; 
    
        NHCommand.ExecuteNonQuery(); 
    

    आरडीबीएमएस सीधे कोई बात कर रहा का प्रकार।

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