sql >> Databasteknik >  >> RDS >> PostgreSQL

Entity Framework ObjectContext -> råa SQL-anrop till inbyggt DBMS

Craigs svar, även om det inte fungerade som det är, fick mig att leta i rätt riktning. Det visar sig att det finns en EntityConnection.StoreConnection-egenskap som ger dig en anslutning till det underliggande DBMS. Så att köra "native" SQL är så enkelt som detta:

    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
        }
    }


  1. SQL Server 2008 OPENROWSET behörighetsproblem

  2. Kör Shell-skript/kommando från MySQL Trigger/Lagrad procedur

  3. Det gick inte att erhålla/skapa anslutning från anslutningspoolen

  4. Ändra MYSQL-datumformat