¿Como ejecutar un procedimiento almacenado con Entity Framework Core?

Hay varias formas de ejecutar un procedimiento de almacenado con Entity Framework Core. La forma que es mas adecuada depende del tipo de retorno del procedimiento almacenado. La siguiente lista muestra las formas más comunes

Para más detalles ver el ejemplo de código más abajo

Usando FromSql

var entidades = _context.Entidad
               .AsNoTracking()
               .FromSql($"exec dbo.ReadAllEntities")
               .ToList();

Usando ExecuteSqlCommand

var afectados = context.Database
                .ExecuteSqlCommand($"exec dbo.tuProcedimiento @Id={id}");

Usado los tipos de consulta


 public partial class MyContext : DbContext
 {
        public MyContext()
        {
        }

        public MyContext(DbContextOptions<MyContext> options)
            : base(options)
        {
        }

        public virtual DbSet<Empleado> Empleados { get; set; }

        public DbQuery<InfoEmpleado> InfoEmpleado { get; set; }


        protected override void OnModelCreating(ModelBuilder modelBuilder)
        {
            modelBuilder.Query<InfoEmpleado>(entity =>
            {
                entity.ToQuery(() => InfoEmpleado
                    .FromSql("dbo.GetEmpleadoInfo"));

                entity.Property(e => e.Id).HasColumnName("empleado_id");
                //...
            });
        }
}