/// 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();
}