Saltar al contenido

¿Cómo pasar parámetros al método DbContext.Database.ExecuteSqlCommand?

Solución:

Prueba esto:

var sql = @"Update [User] SET FirstName = @FirstName WHERE Id = @Id";

ctx.Database.ExecuteSqlCommand(
    sql,
    new SqlParameter("@FirstName", firstname),
    new SqlParameter("@Id", id));

Resulta que esto funciona.

var firstName = "John";
var id = 12;
var sql = "Update [User] SET FirstName = {0} WHERE Id = {1}";
ctx.Database.ExecuteSqlCommand(sql, firstName, id);

Tu también puedes:

1) Pase argumentos sin procesar y use la sintaxis {0}. P.ej:

DbContext.Database.SqlQuery("StoredProcedureName {0}", paramName);

2) Pase los argumentos de la subclase DbParameter y use la sintaxis @ParamName.

DbContext.Database.SqlQuery("StoredProcedureName @ParamName", 
                                   new SqlParameter("@ParamName", paramValue);

Si usa la primera sintaxis, EF realmente ajustará sus argumentos con clases DbParamater, les asignará nombres y reemplazará {0} con el nombre del parámetro generado.

La primera sintaxis si se prefiere porque no necesita usar una fábrica o saber qué tipo de DbParamaters crear (SqlParameter, OracleParamter, etc.).

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *