¿Cuál es la diferencia entre ExecuteSqlCommand vs SqlQuery ? cuando se realiza una db de access?

He tenido un par de sugerencias sobre cómo acceder a los datos de mi base de datos:

var allMyIds
    = context.Database.ExecuteSqlCommand("select id from AspNetUserLogins");

var allMyIds
    = context.Database.SqlQuery<string>("select id from AspNetUserLogins");

Alguien puede explicar la diferencia entre estas si es que hay alguna?

  • Coloca el cursor sobre la var palabras clave. Eso te dará la respuesta.

1 Kommentar

  1. 39

    La SqlQuery método permite volver a las entidades de la base de datos. Donde como ExecuteSqlCommand simplemente ejecuta el comando y devuelve el código de estado de la DB.

    Más aquí

    SqlQuery (El Énfasis Es Mío)

    Crea un raw de la consulta SQL que devuelva los elementos de la tipo. El tipo puede ser cualquier tipo que tiene propiedades que coinciden con los nombres de las columnas que devuelve la consulta, o puede ser un simple tipo primitivo. El tipo no tiene que ser un tipo de entidad. Los resultados de esta consulta nunca son rastreados por el contexto, incluso si el tipo de objeto devuelto es un tipo de entidad. Utilizar el SqlQuery método para devolver entidades que se registran en el contexto. Como con cualquier API que acepta SQL es importante para parametrizar cualquier entrada del usuario para proteger contra un ataque de inyección de SQL. Puede incluir parámetros marcadores de posición en la cadena de consultas SQL y, a continuación, el suministro de los valores de parámetros como argumentos adicionales. Los valores de los parámetros que la oferta será automáticamente convertida a un DbParameter. contexto.La base de datos.SqlQuery(typeof(Post), «SELECT * FROM dbo.Los puestos DONDE el Autor = @p0», userSuppliedAuthor); Alternativamente, usted puede construir también un DbParameter y suministro a SqlQuery. Esto le permite utilizar parámetros con nombre en la cadena de consulta SQL. contexto.La base de datos.SqlQuery(typeof(Post), «SELECT * FROM dbo.Los puestos DONDE el Autor = @autor», new SqlParameter(«@autor», userSuppliedAuthor));

    ExecuteSqlCommand Tipo De Devolución: int

    Ejecuta el dado DDL/DML comando contra la base de datos. Como con cualquier API que acepta SQL es importante para parametrizar cualquier entrada del usuario para proteger contra un ataque de inyección de SQL. Puede incluir parámetros marcadores de posición en la cadena de consultas SQL y, a continuación, el suministro de los valores de parámetros como argumentos adicionales. Los valores de los parámetros que la oferta será automáticamente convertida a un DbParameter. contexto.La base de datos.ExecuteSqlCommand(«ACTUALIZACIÓN de dbo.Puestos CONJUNTO de Calificación = 5 DONDE el Autor = @p0», userSuppliedAuthor); Alternativamente, usted puede construir también un DbParameter y suministro a SqlQuery. Esto le permite utilizar parámetros con nombre en la cadena de consulta SQL. contexto.La base de datos.ExecuteSqlCommand(«ACTUALIZACIÓN de dbo.Puestos CONJUNTO de Calificación = 5 DONDE el Autor = @autor», new SqlParameter(«@autor», userSuppliedAuthor));

    • Así que usted está diciendo que el primer comando que alguien sugirió que para mí no va a funcionar. Es eso correcto ?
    • No, pero depende de su aplicación. Usted puede hacer que vuelvan los datos no en su simple ejemplo. Ver aquí para una respuesta a esa pregunta

Kommentieren Sie den Artikel

Bitte geben Sie Ihren Kommentar ein!
Bitte geben Sie hier Ihren Namen ein

Pruebas en línea