Edgar Matias Candia Arguello
me encanta esta clase, el profesor es rápido, conciso y directo, se nota que sabe lo que hace y su lógica de enseñanza y resolución de conflictos es impecable. 10/10 y espero que el profesor tenga más clases en la plataforma!
Luis Angel Cruz Ruiz
Confirmo!
Jhoan Sebastián Lopera Gallego
Comparto tu opinión
Platzi Team
Actualizando datos con Entity framework
app.MapPut("/api/tareas/{id}", async ([FromServices] HomeworkContext dbContext, [FromBody] Homework homeworks, [FromRoute] Guid id) => { var tarea = await dbContext.homeworks.FindAsync(id); if (tarea == null) { return Results.NotFound(); } tarea.Titulo = homeworks.Titulo; tarea.Descripcion = homeworks.Descripcion; tarea.PrioridadTarea = homeworks.PrioridadTarea; tarea.Resumen = homeworks.Resumen; tarea.CategoriaId = homeworks.CategoriaId; await dbContext.SaveChangesAsync(); return Results.Ok(tarea); });
Este es un código que representa una acción PUT en una aplicación web utilizando el framework ASP.NET Core. La acción está mapeada a la ruta "/api/tareas/{id}" y tiene como objetivo actualizar un registro en una base de datos de tareas.
La acción recibe como argumentos:
El código utiliza el método FindAsync() del contexto de Entity Framework para recuperar la tarea a actualizar. Si no se encuentra una tarea con el identificador especificado, se devuelve un resultado 404 (Not Found).
Si se encuentra una tarea con el identificador especificado, se actualizan sus propiedades con los valores proporcionados en el objeto homeworks y se guardan los cambios en la base de datos mediante el método SaveChangesAsync().
Finalmente, se devuelve un resultado 200 (Ok) junto con los datos actualizados de la tarea.
Leidy Ruiz
Hola muy bueno el curso que estas brindandonos pero queria saber hay alguna forma de agregar datos a las tablas sin tenerlo que hacer columna por columna? asi como lo muestras en el video anterior?
Miguel Teheran
ProfesorPara pasar los datos del objeto que vienen llegando al objeto destino lo que puedes hacer es usar una librería. Por ser fuertemente tipado C# no se comporta como JavaScript que permite fácilmente manipular los datos en objetos.
AutoMapper es una de las mejores para eso: https://docs.automapper.org/en/stable/Getting-started.html
Leonardo Valdivieso
O sea que obtenemos el objeto del Context, lo modificamos y después actualizamos el Context
Jhoan Sebastián Lopera Gallego
Tal cual!
Alejandro Javier Zeballos Aguilar
Hola! ¿Cuál seria la manera mas efectiva de hacer un bulk insert?
Miguel Teheran
ProfesorLo ideal seria usar la clase de SQLClient (en el caso de SQL server) para hacer el bulk, obtendrias el mejor performance posible https://learn.microsoft.com/en-us/dotnet/api/system.data.sqlclient.sqlbulkcopy?redirectedfrom=MSDN&view=dotnet-plat-ext-6.0
de todas formas en una busqueda rápida encontre una extension opensource que ayuda hacerlo directamente en EF, pero nunca la he usado
Rodrigo Rodenbeek
Hola. ¿Por qué se usa plural en la búsqueda del id (Tareas en vez de Tarea) ?
var tareaActual = dbContext.Tareas.Find(id);
Miguel Teheran
ProfesorTareas representa una colección de datos y por eso se coloca en plural, la tabla por normalización si debe ir en singular
Felipe Naranjo
ahí en que momento se actualiza el contexto?
no haría falta una linea antes de guardar el contexto como:
dbContext.update(tareaActual); ???
Miguel Teheran
ProfesorNo es necesario por que traemos el valor actual en el contexto y cualquier cambio que se haga sobre esas entidades afectará los datos a menos que usemos el AsNoTracking en el método.
Facundo Oubel
Se podria hacer en vez de buscarlo con Find() una busqueda con FindAsync()? Ej: var tareaActual = dbContext.FindAsinc(id);
Miguel Teheran
ProfesorSi correcto, se puede usar.
CHRISTIAN JAVIER CISNE TORREZ
ya vi el problema. Faltaba agregar el id a la ruta:
app.MapPut("/api/tareas/{id}"
Jonathan González
Excelente el curso, el profe se da a entender fácilmente !!
Diego Eduardo Téllez Contreras
Noten que el profe mandó 5 datos en el body de la solicitud, pero realmente el dato que viene en fechaCreacion no está haciendo nada porque en el código lo recibimos pero nunca lo estamos asignando. Los unicos campos que estamos actualizando son CategoriaId, Titulo, PrioridadTarea y Descripción.
Cualquier dato adicional que mandemos en el body será irrelevante.
Melvin Canté
Excelente!!
Hans González
Muy excelente clase
carlos augusto sabino cañizares
Excelente profesor. Por favor. que este profesor nos siga profundizando mas en el tema. Sabe hacer muy bien las explicaciones. Lo felicito.
Carlos Madrigal Ramos
Juan Esteban Lopez Parra
tengo el codigo igual pero al omento de actualizar en postman colocando el id correcto me trae el error 404
Juan Esteban Lopez Parra
cabe aclarar que si no determinamos la actualizacion de las propiedad en el codigo como
tareaActual.Titulo = tarea.Titulo;
al momento de actualizar en postman, no afectara el cambio
Jesus Maria Gonzalez Guardo
This is a modal window.The media playback was aborted due to a corruption problem or because the media used features your browser did not support.
Ah alguien mas le ha salido este problema durante la reproducción de video?
Miguel Teheran
ProfesorCreo que es un error de plugin en el navegador, pero no conozco, creo que el equipo de soporte de platzi te puede ayudar
Raúl Alejandro Chávez Valenzuela
¿Cómo manejamos casos donde no se provee uno o varios campos en el update?
Lo intenté y parece que se reciben valores default que no tuve manera práctica de revisar por null o vacío. Tuve que hacerlo campo a campo.
¿No hay una manera de hacer update y que automáticamente entienda que no se deben actualizar los valores no especificados?
Ivan David Martinez Baron
¿Por que al intentar actualizar el campo de la categoría de la entidad Tarea me arroja error? Me imagino que debe ser por la relación de las tablas, algo así como una actualización en cascada? ¿Como se debería hacer? Gracias
Miguel Teheran
Profesoral igual que en cualquier base de datos relacional es muy importante la integridad de los datos, si ahcemos cambios que afecten la integridad EF no va a permitirlo, tendriamos que hacer un backupd de esos datos primero, eliminarlos bajo nuestra responsabilidad y luego hacer los cambios que deseamos.
Endpoint para modificar una Categoria
//Endpoint para modificar una Categoria app.MapPut("/api/categorias/{id}", async ([FromServices] TareasContext dbContext, [FromBody] Categoria categoria, [FromRoute] Guid id) => { var categoriaActual = dbContext.Categorias.Find(id); //el metodo find busca por la clave primaria if(categoriaActual != null) { categoriaActual.Nombre = categoria.Nombre; categoriaActual.Descripcion = categoria.Descripcion; categoriaActual.Peso = categoria.Peso; await dbContext.SaveChangesAsync(); return Results.Ok(); } return Results.NotFound(); });