Conocer las bases de .NET core

1

Desarrollo de Aplicaciones Web con Blazor y Entity Framework

2

Evolución de las tecnologías .NET

3

Evolución y Uso de Visual Studio Code en Desarrollo .NET

4

Desarrollo Web: Cliente, Servidor y Optimización con JavaScript

5

Instalación de Visual Studio Community paso a paso

6

Instalación y Configuración de SQL Server Express 2019

Entender la estructura de Blazor

7

Desarrollo de Aplicaciones con Blazor Server y WebAssembly

8

Estructura y Configuración de Aplicaciones en Visual Studio Code

9

Creación de Formularios Dinámicos con Blade y C#

10

Creación y Uso de Componentes en Glaceau para Formularios Reutilizables

11

Creación y Gestión de Formularios HTML Básicos

12

Arquitectura y Patrones de Diseño en Desarrollo de Software

Aplicar Entity Framework

13

Arquitectura por Capas y Patrones de Diseño en Software

14

Modelado de Datos para Aplicación de Inventario

15

Modelo de Datos para Gestión de Inventarios

16

"Creación de Entidades en .NET Core para Bases de Datos"

17

Diseño y Configuración de Entidades en Bases de Datos

18

Construcción de Relaciones en Modelos de Datos con Entity Framework

19

Creación de Capas de Acceso a Datos con Entity Framework

20

Configuración y migración de bases de datos con Entity Framework

21

Precarga de Datos en Bases de Datos con Entity Framework

Integrar datos en ambientes Blazor

22

Creación de Capas de Negocio en Aplicaciones .NET

23

CRUD Básico en Bases de Datos Relacionales

24

"Creación de Formularios para Registro de Productos en Inventario"

25

"Creación de Formularios y Menús Desplegables en Páginas Web"

26

Listar y Mostrar Productos en Tabla HTML con C#

27

Filtrado Dinámico de Productos por Categoría en HTML

28

Creación y Navegación de Páginas con Listados y Formularios en Sitios Web

29

Actualización de Información de Productos en Componentes Web

30

Actualización y Gestión de Formularios en Aplicaciones Web

31

Integración de Productos en Bodegas: Formularios y Almacenamiento

32

Asociación de Productos con Bodegas en Sitios Web

33

Gestión de Entradas y Salidas en Almacenamiento de Bodegas

34

Cargar y asociar productos a bodegas en Entity Framework

35

Gestión de Inventarios: Actualización y Control de Stocks

Aplicar Diseño con Bootstrap

36

Diseño Responsivo con Vustra: Mejora la Experiencia del Usuario

37

Publicación de Sitios Web en Azure Paso a Paso

38

Arquitectura y Herramientas para Desarrollo Web

No tienes acceso a esta clase

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

Precarga de Datos en Bases de Datos con Entity Framework

21/38
Recursos

¿Cómo precargar datos en nuestra base de datos?

Para mejorar la eficiencia y evitar un tedioso ingreso manual, podemos precargar datos en nuestra base de datos sin tenerla completamente construida. Este enfoque permite integrar datos de ejemplo desde el inicio del desarrollo. Aquí te explico cómo hacerlo usando el contexto de tu aplicación.

¿Qué es el método Onmodelcreating?

El método OnModelCreating en Entity Framework Core se utiliza para configurar el modelo a medida que se construye. Este método se sobrescribe en nuestra clase que hereda de DbContext y no devuelve un valor, es de tipo void.

protected override void OnModelCreating(ModelBuilder modelBuilder)
{
    // Configuración de datos aquí
}

¿Cómo precargar entidades con datos iniciales?

Para precargar entidades, usamos el método HasData dentro de OnModelCreating. Este método permite insertar datos a nuestra base de datos sólo si no existe previamente.

  1. Agregar una categoría:

    Aquí, creamos una nueva instancia de la entidad Category y la llenamos con los datos necesarios. Esta estructura se repite para otras entidades, como bodegas y productos.

    modelBuilder.Entity<Category>().HasData(
        new Category
        {
            CategoryId = Guid.NewGuid(), // Generación de un nuevo Guid
            Name = "Aseo Hogar"
        }
    );
    
  2. Agregar múltiples categorías:

    Puedes definir múltiples instancias añadiendo más objetos dentro del método HasData, separados por comas.

    modelBuilder.Entity<Category>().HasData(
        new Category
        {
            CategoryId = Guid.NewGuid(),
            Name = "Aseo Hogar"
        },
        new Category
        {
            CategoryId = Guid.NewGuid(),
            Name = "Electrodomésticos"
        }
        // Agregar más categorías según sea necesario
    );
    

¿Cómo trabajar con entidades como bodegas?

El mismo proceso se aplica para otras entidades como Warehouse. Se usa el Guid para crear identificadores únicos. Aquí tienes un ejemplo de cómo definir una bodega.

modelBuilder.Entity<Warehouse>().HasData(
    new Warehouse
    {
        WarehouseId = Guid.NewGuid(),
        Name = "Bodega Central",
        Address = "Calle 8 con 23"
    },
    new Warehouse
    {
        WarehouseId = Guid.NewGuid(),
        Name = "Bodega Norte",
        Address = "Calle Norte con Occidente"
    }
);

¿Cómo finalizar la creación de la base de datos?

Después de configurar todos nuestros datos iniciales, el siguiente paso es aplicar las migraciones y crear nuestra base de datos. Este proceso asegura que las tablas no solo existan, sino que también se poblen con los datos definidos.

Aplicar migraciones y actualizar la base de datos

  1. Agregar una migración:

    Se crea una migración utilizando el comando en la consola del Package Manager:

    Add-Migration InitialCreate
    

    Una vez creada, se ejecuta una actualización para aplicar estos cambios:

    Update-Database
    
  2. Verificar y poblar la base de datos:

    Luego de ejecutar los comandos, puedes verificar si la base de datos y sus tablas se han creado usando herramientas como SQL Server Management Studio. Asegúrate de refrescar la vista de las bases de datos para comprobar la existencia de las nuevas tablas y datos.

Con estos pasos, no solo hemos creado una base de datos robusta usando Entity Framework Core, sino también hemos optimizado el flujo de desarrollo al precargar datos esenciales. Sigue explorando y mantente motivado, ya que estas habilidades son fundamentales para tu avance en el desarrollo de software.

Aportes 19

Preguntas 8

Ordenar por:

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

En caso de no haber creado el servidor de Base de Datos usando contraseña, se puede utilizar la siguiente cadena conexión:

options.UseSqlServer(@"Server=machineName\instanceName;Database=InventoryDB;Trusted_Connection=True;");

Hola compañeros llegue a tener un problema, les comparto esto por si les llega a suceder.
Al momento de ejecutar el comando “update-database”, me apareció este error:

_Error Number:8152,State:10,Class:16
String or binary data would be truncated.
The statement has been terminated. _

Este error se presento debido a que los atributos ProductId de la entidad ProductEntity y WarehouseId de la entidad WarehouseEntity tiene establecido una longitud de caracteres menor, a la que se esta tratando de ingresar.
Para solucionar esto pueden agregar una longitud menor a los caracteres que ingresen, o pueden modificar las “DataAnnotations” para que acepten un mayor numero de caracteres, una vez realizado alguna de las dos acciones lo siguiente es ejecutar los siguientes comandos:

add-migration Mensaje
update-database

Esperoq les sea de ayuda.
Saludos 👋.

Por si quieren indicar que el campo Id de una tabla es auto incremental, deben incluir este data annotations antes de la definición del campo:

public class NameEntity
  {
    [Key]
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public int campoId { get; set; }
  }

En los using se deben incluir los siguientes:

usingSystem.ComponentModel.DataAnnotations;
usingSystem.ComponentModel.DataAnnotations.Schema;

Si de pronto les sale el error secuencia de escape no reconocida, en la cadena de conexión al motor de base de datos, si en medio de una cadena tienen el carácter , agreguen otro \
ejemplo:

Antes:

options.UseSqlServer("Server=DESKTOP-xxxx\SQLEXPRESS; Database=InventoryDb; User Id=xxxxx\xxxx; Password=xxxx");

Después:

options.UseSqlServer("Server=DESKTOP-xxxx\\SQLEXPRESS; Database=InventoryDb; User Id=xxxxx\\xxxx; Password=xxxx");

Excelente curso hasta el momento todo bastante claro, muy interesante todo lo que ayudan los DataAnnotations. No se si alguien sabe como personalizar un id ejemplo para todas las categorías colocar CATEG01, CATEG02, CATEG03 y así con las otras tablas

Con base a esta clase y en el caso de Visual Code adjunto la siguiente información:

$ dotnet ef database update {
Va a comprobar si la base de datos no existe las construye desde cero y le
agrega la información si ya existe la base de datos comprueba las migraciones
mira que actualizaciones hay y las registra
}

En caso de que no cargue la información podemos volver a ejecutar los ultimos comandos{
dotnet ef Migrations add FirstMigration
dotnet ef database update
}

Si se quiere definir que un campo tiene un índice único, en el archivo InventaryContext.cs en el método OnModelCreating se debe incluir la siguiente línea para cada campo al que se le desea aplicar:

modelBuilder.Entity<CategoryEntity>().HasIndex(b => b.CategoryCode).IsUnique();

Yo incluí la línea después de

base.OnModelCreating(modelBuilder);

Y antes de la parte de las líneas para poblar las tablas

modelBuilder.Entity<CategoryEntity>().HasData(
          new CategoryEntity { CategoryId = 1, CategoryCode = "ASH", CategoryName = "Aseo Hogar" },
          new CategoryEntity { CategoryId = 2, CategoryCode = "ASP", CategoryName = "Aseo Personal" },
          new CategoryEntity { CategoryId = 3, CategoryCode = "HGR", CategoryName = "Hogar" },
          new CategoryEntity { CategoryId = 4, CategoryCode = "PRF", CategoryName = "Perfumería" },
          new CategoryEntity { CategoryId = 5, CategoryCode = "SLD", CategoryName = "Salud" },
          new CategoryEntity { CategoryId = 6, CategoryCode = "VDJ", CategoryName = "Video Juegos" }
          );

lo máximo esta explicación, muy detallada para lograr el objetivo.

En caso de que tengan un error en el “ConnectionString” del siguiente tipo :
“A connection was successfully established with the server, but then an error occurred during the login process. (provider: SSL Provider, error: 0 - La cadena de certificación fue emitida por una entidad en la que no se confía.)”

Pueden solucionarlo agregando lo siguiente a su string de conexión:

"RESTO_PARAMETROS...;password=123;TrustServerCertificate=True"

Si estás usando Azure SQL la conexión tiene que ir asì:

protected override void OnConfiguring(DbContextOptionsBuilder options)
    {
        if (!options.IsConfigured)
        {
            options.UseSqlServer("Server=tcp:TUSERVER.database.windows.net,1433;Initial Catalog=TUDB;Persist Security Info=False;User ID=TUUSUARIO;Password=TUPASSWORD**;MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;");
        }
    }

uff algo magico crear las tablas de SqlServer desde C# en Visual Studio; normalmente lo hacia manualmente con codigo SQL directamente desde el Managament Studio.

Excelente curso, ojala este mismo profesor actualice los cursos de C#

Al ejecutar los comandos en el “Package Manager Console”, surgieron probelmas con las politicas de powerSell de mi maquina. Para poder ejecutar las migraciones, desde la consola y parado sobre la carpeta “DataAccess” creada en este proyecto, puedes usar los siguientes comandos:

dotnet ef migrations add Init
dotnet ef database update

Puedo usar code first y database first en el mismo proyecto?

Excelente

Quiero compartir algo divertido que me pasó mientras miraba esta clase:
No me hab;ia percatado que en mi primera migración tenía los IDs de mis entadades como tipos int en vez de string.
Claramente, cuando me toca actualizar la base de datos, obtengo varios errores en la consola.

Me tocó borrar la carpeta de migraciones y las tablas de la base de datos. Así, volví a crear una nueva migración, agregar los datos y finalmente, ejecutar:

Update-Database

😃

la felicidad se resume en ver la BD creada

Excelente explicación. todo quedo muy claro.
Gracias profe.

Recuerda hacer la migración antes de haber el update

Si les aparece este error :
“A connection was successfully established with the server, but then an error occurred during the login process. (provider: SSL Provider, error: 0 - La cadena de certificación fue emitida por una entidad en la que no se confía.)”

Deben agregar lo siguiente a la cadena de conexión: TrustServerCertificate=True;

AQUI LA SOLUCION AL ERROR :
A connection was successfully established with the server, but then an error occurred during the login process. (provider: SSL Provider, error: 0 - La cadena de certificación fue emitida por una entidad en la que no se confía.)
SOLUCION
añade “TrustServerCertificate=True;” al String de coneccion ejemplo :
options.UseSqlServer(
“Server=LAPTOP-HAF9RDI7;” +
“Database=InventoryDb;” +
“TrustServerCertificate=True;” +
“User ID=sa;” +
“Password=tuclave;”
);