2015-06-11 6 views
12

एक SQL सर्वर 2008 डेटाबेस के विरुद्ध चल रहे एक सी # प्रोग्राम में SQL सर्वर दृश्य से फ़ील्ड का चयन करने वाली एक विशेष LINQ-to-SQL क्वेरी, जो मेरे स्थानीय देव वातावरण में ठीक चलती है, स्टेजिंग वातावरण में चलाते समय अपवाद उत्पन्न करती है:EntityCommandExecutionException EntityCommandDefinition.ExecuteStoreCommands में क्या कारण हो सकता है?

Exception Message: An error occurred while executing the command definition. See the inner exception for details. 

Exception Trace: System.Data.Entity.Core.EntityCommandExecutionException 
at System.Data.Entity.Core.EntityClient.Internal.EntityCommandDefinition.ExecuteStoreCommands(EntityCommand entityCommand, CommandBehavior behavior) 
at System.Data.Entity.Core.Objects.Internal.ObjectQueryExecutionPlan.Execute[TResultType](ObjectContext context, ObjectParameterCollection parameterValues) 
at System.Data.Entity.Core.Objects.ObjectContext.ExecuteInTransaction[T](Func`1 func, IDbExecutionStrategy executionStrategy, Boolean startLocalTransaction, Boolean releaseConnectionOnSuccess) 
at System.Data.Entity.Core.Objects.ObjectQuery`1.<>c__DisplayClass7.b__5() 
at System.Data.Entity.SqlServer.DefaultSqlExecutionStrategy.Execute[TResult](Func`1 operation) 
at System.Data.Entity.Core.Objects.ObjectQuery`1.GetResults(Nullable`1 forMergeOption) 
at System.Data.Entity.Core.Objects.ObjectQuery`1..GetEnumerator>b__0() 
at System.Data.Entity.Internal.LazyEnumerator`1.MoveNext() 
at System.Collections.Generic.List`1..ctor(IEnumerable`1 collection) 
at System.Linq.Enumerable.ToList[TSource](IEnumerable`1 source) 
at [my code ...] 

इस अपवाद का कारण क्या हो रहा है?

उत्तर

14

यह एक LINQ क्वेरी के कारण हो सकता है जो उस क्षेत्र का चयन करने का प्रयास कर रहा है जो वास्तव में लक्षित डेटाबेस दृश्य या तालिका पर मौजूद नहीं है।

यह एक तरीका हो सकता है (जो मेरे मामले में समस्या थी) लक्षित पर्यावरण पर तैनात करने की उपेक्षा कर रहा है हाल ही में निर्मित इकाई फ्रेमवर्क माइग्रेशन जो नए क्षेत्र को पूछे जाने वाले दृश्य में जोड़ता है।

एक और चीज देखने के लिए एंटाइट कमांडएक्सएंडएक्स्यूशन अपवाद (जैसा कि त्रुटि संदेश द्वारा सुझाया गया है) का आंतरिक अपवाद है। इस मामले में, आंतरिक अपवाद प्रकार SqlException का था और उपयोगी संदेश Invalid column name ‘[my column name]’ था।

तो, बातें जब EntityCommandDefinition.ExecuteStoreCommands पर एक EntityCommandExecutionException फेंक दिया जाता है जब एक LINQ करने वाली एसक्यूएल क्वेरी चलाने को देखने के लिए:

  • भीतरी अपवाद की जांच (के रूप में बाहरी अपवाद के त्रुटि संदेश ने सुझाव दिया)।
  • सुनिश्चित करें कि सभी एंटीटी फ्रेमवर्क माइग्रेशन लक्ष्य वातावरण पर तैनात किए गए हैं (यदि ईएफ उपयोग में है)।
  • जांचें और देखें कि क्या क्वेरी मौजूद फ़ील्ड का चयन करने का प्रयास कर रही है या नहीं।
6

यह कनेक्शन स्ट्रिंग में "Multiple Active Result Sets" गायब होने के कारण हो सकता है।

एकाधिक सक्रिय परिणाम समूह (एमएआरएस) एक ऐसी सुविधा है जो एक ही कनेक्शन पर एकाधिक बैचों के निष्पादन की अनुमति देती है। पिछले संस्करणों में, एक कनेक्शन के खिलाफ एक समय में केवल एक बैच निष्पादित किया जा सकता था। एमएआरएस के साथ कई बैचों को निष्पादित करने से संचालन के साथ-साथ निष्पादन का संकेत नहीं मिलता है।

ठीक करने के लिए:

string connectionString = "Data Source=MSSQL1;" + 
"Initial Catalog=AdventureWorks;Integrated Security=SSPI;" + 
"MultipleActiveResultSets=True"; 
+0

धन्यवाद !!! मेरे लिए काम किया –

0

मेरे जैसे स्थानीय संपत्ति के लिए उपयोग में मदद की। अपवाद:

foreach (var myTableObject in context.Table) 
{ 
    // Exception 
} 


foreach (var myTableObject in context.Table.Local) 
{ 
    // No exception 
} 
संबंधित मुद्दे