Exécution de SQL dans un cadre d'entité?

entity-framework

Question

Est-il possible d'exécuter une instruction SQL directement à partir des appels générés par la structure de l'entité? Ou devrai-je créer une procédure puis l'appeler via le cadre de l'entité?

Réponse acceptée

Est-ce que Googling a été utilisé pour cela moi-même l'autre jour, c'est l'exemple que j'ai trouvé, j'espère

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

Réponse populaire

En EF 4.0, cela est assez facile car il existe de nouvelles méthodes sur ObjectContext qui vous permettent d’exécuter directement des commandes de magasin (c.-à-d. SQL):

Voir ceci: ExecuteStoreCommand

Si vous utilisez toujours EF 3.5 SP1, vous pouvez toujours exécuter une requête directement sur la base de données si vous voulez vraiment aimer ceci:

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

À ce stade, vous avez accès à une connexion (dbconn) à la base de données sous-jacente. Vous pouvez donc utiliser le code ADO.NET normal pour exécuter des requêtes, etc.

J'espère que cela t'aides

Alex



Related

Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow