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

Resuelto eadam asked hace 9 años • 20 respuestas

Estoy usando EF Core 1.0 en una aplicación ASP.NET Core. ¿Puede indicarme la forma correcta de ejecutar procedimientos almacenados? El antiguo método con ObjectParametersy ((IObjectContextAdapter)this).ObjectContext.ExecuteFunctionno funciona.

eadam avatar Feb 19 '15 12:02 eadam
Aceptado

La compatibilidad con procedimientos almacenados en EF Core 1.0 ahora está resuelta; esto también admite la asignación de múltiples conjuntos de resultados.

Consulta aquí los detalles de la solución.

Y puedes llamarlo así en C#.

var userType = dbContext.Set().FromSql("dbo.SomeSproc @Id = {0}, @Name = {1}", 45, "Ada");
Arvin avatar Dec 16 '2015 12:12 Arvin

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

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 INSERTAR/ACTUALIZAR/ELIMINAR. si desea ejecutar consultas INSERTAR, ACTUALIZAR, ELIMINAR, use el comando ExecuteSqlCommand

    var categoryName = "Electronics";
    dataContext.Database
               .ExecuteSqlCommand("dbo.InsertCategory @p0", categoryName);
Rohith avatar May 29 '2017 14:05 Rohith