2014-07-25 6 views
5

जब मैं अपने SQL सर्वर डेटाबेस पर अद्यतन निष्पादित करता हूं, तो मुझे अद्यतन और कुछ ट्रिगर्स की प्रभावित पंक्तियों से प्रभावित पंक्तियों का परिणाम मिलता है।अद्यतन क्वेरी का केवल परिणाम प्राप्त करें

इसलिए उदाहरण के लिए

, एक अद्यतन डेटाबेस पर सीधे मार डाला:

UPDATE: (32 row(s) affected) 
Trigger1: (1 row(s) affected) 
Trigger2: (2 row(s) affected) 
... 

अब जब मैं _context.Database.ExecuteSqlCommand(query, params) निष्पादित मैं हमेशा उन सभी परिणामों की राशि पाने के लिए, मेरे उदाहरण में परिणाम मूल्य 35 है।

मुझे अपने उदाहरण 32 में केवल UPDATE के परिणाम की आवश्यकता है।

क्या ट्रिगर के परिणामों को अनदेखा करने की कोई संभावना है?

उत्तर

2

मुझे लगता है कि अगर ट्रिगर्स को बदलना संभव है तो @ Alireza का जवाब सबसे अधिक समझ में आता है, लेकिन यदि आप अपडेट स्टेटमेंट निष्पादित करने के लिए अपना डेटाबेस कॉल नहीं बदल सकते हैं और @@ROWCOUNT वापस कर सकते हैं?

_context.Database.SqlQuery<int>("update xx ...; select @@ROWCOUNT"); 

मैं MSDN पर किसी भी प्रलेखन नहीं मिल सकता है लेकिन this question पुष्टि करता है कि @@ ROWCOUNT चलाता से अप्रभावित है।

+0

अच्छा विचार, मैं कोशिश करूँगा! –

+0

यह निश्चित रूप से मेरे मामले में – Alireza

+0

हां, इस विशेष मामले के बारे में बेहतर समाधान हो सकता है। अन्यथा क्लीनर समाधान आपका @Alireza –

3

अपने ट्रिगर की पहली पंक्ति पर SET NOCOUNT ON रखो।

+0

मेरे लिए ट्रिगर बदलने के लिए यह संभव नहीं है, अन्यथा यह एक अच्छा समाधान होगा। –

+0

क्या यह अनुमति के कारण है? या अन्य कारण भी हैं? – Alireza

+0

हां, यह एक बड़ा डेटाबेस है, जो कई कार्यक्रमों द्वारा उपयोग किया जाता है। तो यह इतना आसान नहीं है ;-) –

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