/// EF Execute sql
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(); // open connection if not already open using (DbCommand cmd = conn.CreateCommand()) { cmd.CommandText = sql; cmd.ExecuteNonQuery(); } } finally { if (initialState != ConnectionState.Open) conn.Close(); // only close connection if not initially open } }
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
static void Main(string[] args) { EntityConnection myConnection = new EntityConnection(ConfigurationManager.ConnectionStrings["SimpleDBEntities"].ConnectionString); //Using ExecuteStoreQuery in EF4. using (SimpleDBEntities se = new SimpleDBEntities(myConnection)) { foreach(var tableNames in se.ExecuteStoreQuery<string>("SELECT name FROM sys.tables")) { Console.WriteLine(tableNames); } } //Extract the SqlConnection from the EntityConnection. SqlConnection mySqlConnection = myConnection.StoreConnection as SqlConnection; if (mySqlConnection.State != System.Data.ConnectionState.Open) mySqlConnection.Open(); SqlCommand myCommand = new SqlCommand("SELECT name FROM sys.tables", mySqlConnection); using (var tableNames = myCommand.ExecuteReader()) { while (tableNames.Read()) { Console.WriteLine(tableNames[0].ToString()); } } mySqlConnection.Close(); Console.ReadLine(); }