No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Utilizando base de datos en memoria

10/25
Recursos

Aportes 31

Preguntas 18

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

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:

  1. Llamada al método EnsureCreated en el objeto dbContext.Database. Este método asegura que la base de datos está creada y lista para su uso.
  2. Devolución de una respuesta HTTP 200 OK con un mensaje que indica si la base de datos es una base de datos en memoria o no. Esto se logra mediante la llamada a dbContext.Database.IsInMemory().

Excelente ritmo para todos los niveles de conocimiento de los alumnos. Muy buena explicación!

Para los que tienen problemas al ejecutar los certificados:

dotnet dev-certs https --clean
dotnet dev-certs https --trust

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.

Si no te aparece el metodo UseInMemoryDatabase de EFC con NuGet instala Microsoft.EntityFrameworkCore.InMemory

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

el vscode no encuentra las referencias a System.ComponentModel.DataAnnotations;

como puedo agregar la referencia?

Por si no quieres instalar Postman: <https://hoppscotch.io/> también lo puedes hacer desde VS Code con una extensión y mil otras formas pero estas son fáciles

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.

Para los que han tenido dudas con expresiones Lambda, les comparto el siguiente link, a mi me ayudó mucho.

https://learn.microsoft.com/es-es/dotnet/csharp/language-reference/operators/lambda-expressions

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!

![](

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());
});
```c# 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... ![](https://static.platzi.com/media/user_upload/image-31b7cf7f-af63-4429-9c84-add84d4bd2d5.jpg)![](https://static.platzi.com/media/user_upload/image-fd25c2cd-2d70-4c7e-992c-16cbdcd9e34a.jpg) Solucionado: ![](https://static.platzi.com/media/user_upload/image-df2d0667-b87d-4da1-999d-46e0bfabbaa6.jpg)
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.
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
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".
Hola a todos, al ejecutar el comando dotnet build, me arroja el siguiente detalle: ![](https://static.platzi.com/media/user_upload/Captura%20de%20Pantalla%202024-08-31%20a%20la%28s%29%2010.55.23%20a.m.-bf68965c-b853-4b85-bb28-9518a7f56266.jpg) Agradecería que me ayudaran a especificar cual es el archivo de solución principal.
No se porque pero me daba el error de 404 not found, esto puede haber sido por cambiarle el nombre al proyecto anteriormente pasando de projecto a proyecto, cuando lo volvi a poner como al inicio funciono bien
Hola a todos. Si alguien, al igual que yo tiene problemas con el método UseInMemoryDatabase, problemas relacionados con el no reconocimiento de este método por parte del código, quizás esta solución pueda ser de ayuda: 1\. Ejecuten el siguiente comando en la terminal: ` dotnet add package Microsoft.EntityFrameworkCore.InMemory` 1. Utilicen la directiva: `using Microsoft.EntityFrameworkCore;`
![](https://static.platzi.com/media/user_upload/image-7e9a5dc1-40fe-46c6-9787-c285897f9f5f.jpg) ![](https://static.platzi.com/media/user_upload/image-6e2bfa8e-cf83-4077-9f24-962f1575eb29.jpg)
![](Descargas\1)Porque solo me responde por el puesto http? ![](https://static.platzi.com/media/user_upload/2-6243515b-8192-45a1-87e7-faa7359282f9.jpg)
A la fecha de éste comentario, estoy usando .NET 8.0 y los respectivos paquetes en la versión 8.0+, si alguien con un SDK igual o superior siguió todos los pasos del curso pero al tratar de compilar un proyecto les salió un error de compatibilidad, se debe a que no es necesario instalar el paquete de SQL, pues al parecer el paquete InMemory ya lo tiene embebido, por lo que en los plugins no es necesario incluirlo. ![](https://static.platzi.com/media/user_upload/image-3499a876-a1d2-4069-9eb4-8f145ec67b03.jpg) Con eso al parecer la base de datos fue creada exitosamente: ![](https://static.platzi.com/media/user_upload/image-6ad7cc42-c62f-4afc-8649-dd85f754ea20.jpg)
¡Qué bonito y todo! pero... ¿Qué CHiflado$ es Postman? 🤨🤔
Para los que tienen el problema de que " UseInMemoryDatabase not Foud " se debe instalar dotnet add package Microsoft.EntityFrameworkCore.InMemory

He realizado todos los pasos igual que en la clase y me daba el siguiente error:

Error: write EPROTO 50201480:error:100000f7:SSL routines:OPENSSL_internal:WRONG_VERSION_NUMBER:…/…/…/…/src/third_party/boringssl/src/ssl/tls_record.cc:242:

Si te pasa lo mismo, prueba a quitar la s de https.

Se puede sustituir a Postman con la extensión de Visual Code: RapidApi Client, que es muy practica. Podemos revisar algún tutorial de Youtube para aprender como usarla.

Por si estan intentando resolver el problema y se dieron cuenta que habian escrito mal alguna linea de codigo prueben cerrar postman, guardar todos los cambios en visual studio code, compilar con dotnet build, luego dotnet run y abrir postman.

Para los que tocaron el nombre del projectef tienen que revisar los archivos.json dentro de la carpeta .vscode y actualizarlos allí también, CTRL + F + projectef

ctrl + .

Si alguna vez ven un error en VSCode, el comando “ctrl + .” Les sugerirá algunas soluciones y también pueden realizar la solución propuesta con un enter.

a las personas que les falla InMemoryDatabese visual studio 2022 deben instalar este paquete: dotnet add package Microsoft.EntityFrameworkCore.InMemory --version 7.0.4

crear el gitignore con : dotnet new gitignore
fuente: https://dev.to/kasuken/create-a-gitignore-file-with-dotnet-cli-4oho