¿Cómo ejecutar procedimientos almacenados en Entity Framework Core?
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 ObjectParameters
y ((IObjectContextAdapter)this).ObjectContext.ExecuteFunction
no funciona.
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");
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);