मैं अपने अगले नए ऐप्स के लिए ईएफ का मूल्यांकन कर रहा हूं।सभी इकाई फ्रेमवर्क लेनदेन के अलगाव स्तर को वैश्विक स्तर पर बदलने के लिए
मैं आवेदन में सभी ईएफ लेनदेन के अलगाव स्तर को कैसे बदल सकता हूं? पूर्व: मान लीजिए कि मैं "प्रतिबद्ध स्नैपशॉट पढ़ें" का उपयोग करना चाहता हूं।
हालांकि अलगाव लेवल को निर्दिष्ट करना ठीक है, जब भी मुझे स्पष्ट रूप से एक ट्रांज़ेक्शनस्कोप की आवश्यकता है (नीचे कोड देखें) यह बदसूरत रूप से एक ट्रांज़ेक्शनस्कोप में हर ईएफ सेव ऑपरेशन को समाहित करने के लिए बदसूरत होगा।
'OK
Using tsc As New TransactionScope(TransactionScopeOption.RequiresNew, TransactionOption.ReadCommitted)
UpdateShoppingCart
EnqueueNewOrder
SendConfirmationEmail
tsc.Complete
End Using
'Is this really the only way to avoid Serializable?
Using tsc As New TransactionScope(TransactionScopeOption.RequiresNew, TransactionOption.ReadCommitted)
_ctx.SaveChanges()
tsc.Complete
End Using
Class TransactionOption
Public Shared ReadOnly ReadCommitted As New TransactionOptions() With {
.IsolationLevel = IsolationLevel.ReadCommitted,
.Timeout = TransactionManager.DefaultTimeout
}
End Class
मुझे लगता है कि मिश्रण अलगाव लेवल एक अच्छा विचार नहीं है। क्या मैं इसके साथ गलत हूँ?
सीरियलज़ेबल और एसक्यूएल सर्वर (ओरेकल के विपरीत) के साथ एक साधारण निर्दोष दिखने वाले पढ़ने को एक रूपांतरण लॉक डेडलॉक का कारण बन सकता है।
एफई पूछे जाने वाले प्रश्न से: "यह अनुशंसित है कि आप पढ़ें कमिट लेनदेन का उपयोग करें और पढ़ें कमिट स्नैपशॉट अलगाव उपयोग करें यदि आप लेखकों और लेखकों पाठकों ब्लॉक नहीं ब्लॉक नहीं पाठकों की आवश्यकता है।"
मुझे समझ में नहीं आता कि ईएफ सीरियलज़ेबल के लिए क्यों डिफ़ॉल्ट है और डिफ़ॉल्ट अलगाव स्तर को बदलने में इतना मुश्किल बनाता है - SQL सर्वर (ओरेकल के बहु-संस्करण के विपरीत) एक निराशावादी समरूपता मॉडल के लिए डिफ़ॉल्ट है। कॉन्फ़िगरेशन विकल्प को कार्यान्वित करना बहुत आसान होना चाहिए - या क्या मुझे यहां कुछ याद आ रहा है?
आप कहां से ईरियल को Serializable में डिफ़ॉल्ट पाया? –