Saltar al contenido

¿Cómo ejecutar procedimientos almacenados en Entity Framework Core?

Solución:

El soporte para procedimientos almacenados en EF Core 1.0 se resuelve ahora, esto también admite el mapeo de múltiples conjuntos de resultados.

Consulte aquí los detalles de la corrección

Y puedes llamarlo así en c #

var userType = dbContext.Set().FromSql("dbo.SomeSproc @Id = {0}, @Name = {1}", 45, "Ada");

La compatibilidad con procedimientos almacenados aún no está implementada (a partir de 7.0.0-beta3) en EF7. Puede seguir el progreso de esta función utilizando el número 245.

Por ahora, puede hacerlo a la antigua usanza usando ADO.NET.

var connection = (SqlConnection)context.Database.AsSqlServer().Connection.DbConnection;

var command = connection.CreateCommand();
command.CommandType = CommandType.StoredProcedure;
command.CommandText = "MySproc";
command.Parameters.AddWithValue("@MyParameter", 42);

command.ExecuteNonQuery();

Para ejecutar los procedimientos almacenados, use el método FromSql que ejecuta consultas RAW SQL

p.ej

    var products= context.Products
        .FromSql("EXECUTE dbo.GetProducts")
        .ToList();

Para usar con parámetros

    var productCategory= "Electronics";

    var product = context.Products
        .FromSql("EXECUTE dbo.GetProductByCategory {0}", productCategory)
        .ToList();

o

    var productCategory= new SqlParameter("productCategory", "Electronics");

    var product = context.Product
        .FromSql("EXECUTE dbo.GetProductByName  @productCategory", productCategory)
        .ToList();

Existen ciertas limitaciones para ejecutar consultas SQL RAW o procedimientos almacenados. No puede usarlo para INSERT / UPDATE / DELETE. si desea ejecutar las consultas INSERT, UPDATE, DELETE, use ExecuteSqlCommand

    var categoryName = "Electronics";
    dataContext.Database
               .ExecuteSqlCommand("dbo.InsertCategory @p0", categoryName);
¡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 *