Contenido del curso
Contenido del curso
Platzi Team
Ramiro Xavier Aguirre
Brandom Rafael Ledesma Muñoz
Oscar Fuentes Esteves
Jossie Steeven Quintero Giron
Sergio Sanchez
Juan Rossano
Caffè Latte
Raúl Alejandro Chávez Valenzuela
Juan Pablo Correa Suarez
Luca Cristian Manea
Renzo Orlando De La Cruz Unzueta
Thomas Jeffery
Rodrigo Ramos
Juan Esteban Lopez Parra
Rodrigo Ramos
Byron Melgar
Nicolas Guillen
Andres Felipe Zuluaga Arcila
Franklin Quispe
Jose Antonio Diaz Urbano
Carlos Madrigal Ramos
Carlos Madrigal Ramos
Roger Ullilen Echeverria
KEVIN A. DERAS
Miguel Teheran
Kenet Andrés Chungandro Montenegro
Gustavo Medina Limon
Luis Alvarez
Israel Arroyo
Lautaro Martinez
Kenneth David Gaitan Evanks
Utilizando base de datos en memoria
El método UseInMemoryDatabase se utiliza para especificar que se debe usar una base de datos en memoria en lugar de una base de datos en disco. Esto puede ser útil para fines de prueba o para aplicaciones con una cantidad limitada de datos que no requieren una base de datos persistente.
builder.Services.AddDbContext<HomeworkContext>(p => p.UseInMemoryDatabase("TareasDB"));
Esta línea de código está agregando un contexto de base de datos al contenedor de servicios en .NET Core utilizando el método AddDbContext del objeto IServiceCollection llamado builder.Services. La clase HomeworkContext es la clase que representa el contexto de la base de datos y se está configurando para usar una base de datos en memoria con el nombre "TareasDB".
Definimos nuestro endpoint
app.MapGet("/dbconexion", async ([FromServices] HomeworkContext dbContext) => { dbContext.Database.EnsureCreated(); return Results.Ok("Base de datos en memoria: " + dbContext.Database.IsInMemory()); });
La ruta se está implementando como una función async que recibe una instancia de la clase HomeworkContext a través del atributo [FromServices].
La función realiza dos acciones:
EnsureCreated en el objeto dbContext.Database. Este método asegura que la base de datos está creada y lista para su uso.dbContext.Database.IsInMemory().Excelente ritmo para todos los niveles de conocimiento de los alumnos. Muy buena explicación!
Si no te aparece el metodo UseInMemoryDatabase de EFC con NuGet instala Microsoft.EntityFrameworkCore.InMemory
En mi caso, se me hace más cómodo usar la extensión para VSCode llamada REST Client. Ya que no salgo del mismo entorno.
Para los que tienen problemas al ejecutar los certificados:
dotnet dev-certs https --clean dotnet dev-certs https --trust
Gracias, esto funciono!
A mi me sigue sin funcionar por credenciales erroneas. Ejecute los dos comandos limpiando el certificado y resintalandolo y lo mismo.
Me topé con un error que les puede pasar a la hora de ejecutar la aplicación, en mi caso fue este:
The entity type requires a primary key to be defined
Para solucionarlo recuerden que las clases de los modelos deben ser públicos y las propiedades de las clases deben tener get y set
Para los que se toparon con este error pero las key están bien, asegúrense de NO nombrar su clase de tareas como "Task", pues ya existe una clase Task en el sistema. Nómbrenla "MyTask" o "Tarea" para que no haya ambigüedad.
Así me pasó y no marca error en build pero sí truena al hacer GET a "/dbconexion".
lo del compañero raúl chávez me funcionó muchas gracias <3
el vscode no encuentra las referencias a System.ComponentModel.DataAnnotations;
como puedo agregar la referencia?
Tal vez no has instalado el nugget.
dotnet add package Microsoft.EntityFrameworkCore --version 6.0.5
dotnet add package Microsoft.EntityFrameworkCore.InMemory --version 6.0.5
dotnet add package Microsoft.EntityFrameworkCore.SqlServer --version 6.0.5
Te paras sobre el error y apretas: CTRL + . Ahi te salen todas las soluciones posibles para tu error. Una vez ahi te tiene que aparecer agregar referencia using de DataAnnotations
Y en que clase explicaron la descarga/instalación/uso de POSTMAN?
Otro curso más de Platzi que me encuentro donde explican a su manera lo que quieren, se supone que uno esta tomando esta ruta para que lo lleven de la mano en todos los aspectos
Uno tiene que buscar por su cuenta las lagunas que tienen sus cursos
creo que si es mucho mejor Udemy
muy claro se menciono en los prerrequisitos los conocimientos y herramientas a utilizar.
Si desconoces algo pues por tu cuenta tratas de entender o usar a si sea lo mínimo, ¿o esperas que en el mundo laboral te lleven de la mano cuando no sabes x cosa?
Juan respondiendo a tu pregunta aunque sea redundante y obvia: no no se espera eso en el mundo laboral por eso tú, yo y toda la comunidad Platzi pagamos esta suscripción, para APRENDER y tener herramientas. Y justo porque nos tenemos que preparar para el mundo laboral pagamos esta suscripción, para que te enseñen y lleven de la mano, ahora dime tú ¿Para que pagas la suscripción? porque si la pagas para que por tu cuenta y otro medio busques la información faltante mejor ahórrate ese dinero
Postman ya tiene una extensión para VS Code https://blog.postman.com/introducing-the-postman-vs-code-extension/ a Mayo 2023 está en Beta pero anda muy bien por ahora.
Por si no quieres instalar Postman: también lo puedes hacer desde VS Code con una extensión y mil otras formas pero estas son fáciles
Para los que han tenido dudas con expresiones Lambda, les comparto el siguiente link, a mi me ayudó mucho.
No funciona el link
Alguien sabría decirme por qué me salen estas advertencias y cómo solucionarlo. El programa me funciona sin problema pero es muy molesto tener eso ahí :( Gracias!
 Ej: TuProyectp.csproj, cambia la etiqueta <Nullable> a disabled
Esto es porque por defecto viene configurado para que muestre advertencias en propiedades que pueden ser nulas.
para los que le sale error considerar este codigo .
app.MapGet("/dbconexion", async ([FromServices] TareasContext dbContext) =>{ await dbContext.Database.EnsureCreatedAsync(); return Results.Ok("Base de datos en memoria" + dbContext.Database.IsInMemory());});
En la función lambda me dice que al no tener un await se ejecutará de forma asíncrona, entonces ¿Por qué la declaramos como async, o donde y en que métodos debería poner el await, pues el EnsureCreated no lo permite? Ojo esto no da error, solo genera una advertencia. Pero tengo la duda de si se ejecutará síncrona ¿por qué declararla como asíncrona?.
El await solo es requerido cuando vas a llamar un método de manera asincrona. en el caso de que no lo sea no es necesario usar el async y el await
A los que les mando este error en postman: connect ECONNREFUSED Esto se soluciona quitando el Async del MapGet
app.MapGet("/dbconexion", ([FromServicesAttribute] TareasContext dbContext) => { dbContext.Database.EnsureCreated(); return Results.Ok("Base de datos en Memoria: " + dbContext.Database.IsInMemory()); });
using Microsoft.AspNetCore.Mvc; using Microsoft.EntityFrameworkCore; using proyectoef.Models; var builder = WebApplication.CreateBuilder(args); // Registrando servicios builder.Services.AddDbContext<TareasContext>(options => options.UseInMemoryDatabase("TareasDB")); var app = builder.Build(); // Definir rutas en controladores o servicios separados app.MapGet("/", () => "Hello World!"); app.MapGet("/dbconexion", async ([FromServices] TareasContext dbContext) => { try { dbContext.Database.EnsureCreated(); return Results.Ok("Base de datos en memoria: " + dbContext.Database.IsInMemory()); } catch (Exception ex) { return Results.BadRequest("Error al conectar a la base de datos: " + ex.Message); } }); app.Run(); ```Esta es una solución: Copiar link directamente de la pagina...   Solucionado: 
Me gustaría entender que es lo que se esta haciendo en la linea 6 y 12 del archivo program.cs :| Hay algún curso que me perdí?
Saludos.
Al ser un GET también se puede poner la URL del localhost en el navegador y ver el resultado :)
Una expresión lambda es una forma concisa de crear funciones anónimas (sin nombre). Se usan mucho para escribir código más corto y legible.