2009-11-05 12 views
5

क्या इकाई फ्रेमवर्क जेनरेट कॉल से सीधे एसक्यूएल कथन चलाने का कोई तरीका है? या क्या मुझे एक प्रक्रिया बनाना होगा, फिर इकाई ढांचे के माध्यम से कॉल करें?इकाई ढांचे में एसक्यूएल चलाना?

उत्तर

10

अपने आप को दूसरे दिन इस के लिए चारों ओर Googling था, इस उदाहरण मैं आशा पाया यह

static void ExecuteSql(ObjectContext c, string sql) 
    { 
     var entityConnection = (System.Data.EntityClient.EntityConnection)c.Connection; 
     DbConnection conn = entityConnection.StoreConnection;  
     ConnectionState initialState = conn.State; 
     try 
     { 
      if (initialState != ConnectionState.Open) 
       conn.Open(); 
      using (DbCommand cmd = conn.CreateCommand()) 
      { 
       cmd.CommandText = sql; 
       cmd.ExecuteNonQuery(); 
      } 
     } 
     finally 
     { 
      if (initialState != ConnectionState.Open) 
       conn.Close(); 
     } 
    } 
+1

मैं के उपयोग सलाह होगा ExecuteStoreCommand() उपरोक्त ExecuteSql() के बजाय ऑब्जेक्ट कॉन्टेक्स्ट में –

5

एफई 4.0 में यह बहुत आसान है क्योंकि वहाँ ObjectContext है कि आप की दुकान आदेशों (यानी एसक्यूएल) सीधे निष्पादित कर सकते हैं पर नए तरीके हैं:

इस देखें: ExecuteStoreCommand

आप अभी भी एफई उपयोग कर रहे हैं 3.5 एसपी 1 आप अभी भी डेटाबेस के खिलाफ सीधे एक प्रश्न पर अमल करता है, तो आप वास्तव में इस तरह करना चाहते हैं कर सकते हैं: इस बिंदु आप अंतर्निहित डेटाबेस से संबंध (dbconn) की पहुंच है पर

var econn = ctx.Connection as EntityConnection; 
var dbconn = econn.StoreConnection; 

है, तो आप उपयोग कर सकते हैं सामान्य ADO.NET कोड निष्पादित करने के लिए प्रश्नों आदि

आशा इस मदद करता है

एलेक्स

0

@Alex जेम्स, जिज्ञासा से बाहर, इस कोड का एक पूरा टेक्स्ट एसक्यूएल बिट को चलाने के लिए, के रूप में कुशल हो जाएगा कोई प्रदर्शन ओवरहेड सही नहीं होना चाहिए? कहने के लिए, एसक्यूएल प्रबंधन स्टूडियो में एक क्वेरी के रूप में सीधे एक ही पूर्ण पाठ एसक्यूएल कोड चला रहा है।

1

ExecuteStoreQuery<> और ExecuteStoreCommand मदद करता है कि आप क्या चाहते:

using (NorthWindEntities ctx = new NorthWindEntities()) 
{ 
    ctx.ExecuteStoreQuery<>() 
    ctx.ExecuteStoreCommand(); 
} 
संबंधित मुद्दे