Отговорът на Крейг, въпреки че не работи такъв, какъвто е, ме накара да погледна в правилната посока. Оказва се, че има свойство EntityConnection.StoreConnection, което ви осигурява връзка с основната СУБД. Така че изпълнението на "родния" 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
}
}