Conocer las bases de .NET core

1

驴Qu茅 necesitas para aprender a desarrollar aplicaciones profesionales en .NET con Blazor?

2

Todo lo que aprender谩s sobre Blazor

3

Evoluci贸n de .Net

4

驴C贸mo funciona el Desarrollo Web sin Blazor?

5

Instalando Visual Studio Community

6

Instalando SQL Server Express

Entender la estructura de Blazor

7

Webassemblies y .Net Core 3

8

Anatom铆a de una aplicaci贸n Blazor

9

Blazor pages

10

Blazor components

11

Introducci贸n a formularios

12

Inyecci贸n de dependencias

Aplicar Entity Framework

13

Arquitectura vs. Patrones de Dise帽o

14

Estructurando nuestro proyecto

15

驴En qu茅 consiste Entity Framework y por qu茅 vamos a trabajarlo?

16

Creaci贸n de entidades

17

Data annotations

18

Trabajando el relacionamiento entre entidades

19

Creando el datacontext

20

Migraciones

21

Alimentando la base de datos

Integrar datos en ambientes Blazor

22

Construyendo la capa intermedia o capa de negocio

23

El CRUD de integraci贸n de datos

24

Creaci贸n de formularios con Blazor

25

Finalizando el formulario

26

Trabajando listas de datos

27

Agregando filtros a nuestra lista

28

Guardando nuevos registros

29

Creaci贸n formulario de actualizaci贸n de datos

30

Aplicando actualizaci贸n de datos

31

Registrando productos en almacenamiento

32

Creando p谩gina de almacenamiento

33

Cargando productos por Bodega para entradas y salidas

34

Relacionando productos y formulario de entradas y salidas

35

Finalizando el formulario de entradas y salidas

Aplicar Dise帽o con Bootstrap

36

Revisi贸n de estilos: Introducci贸n a Bootstrap

37

Publicando el sitio

38

Cierre del curso

No tienes acceso a esta clase

隆Contin煤a aprendiendo! 脷nete y comienza a potenciar tu carrera

Aprende todo un fin de semana sin pagar una suscripci贸n 馃敟

Aprende todo un fin de semana sin pagar una suscripci贸n 馃敟

Reg铆strate

Comienza en:

2D
3H
24M
55S

Alimentando la base de datos

21/38
Recursos

Aportes 19

Preguntas 8

Ordenar por:

驴Quieres ver m谩s aportes, preguntas y respuestas de la comunidad?

o inicia sesi贸n.

Si no se les ocurren direcciones falsas (como a m铆) puede usar esta p谩gina: https://www.fakeaddressgenerator.com/

modelBuilder.Entity<WarehouseEntity>().HasData(
    new WarehouseEntity() { 
        WarehouseId = Guid.NewGuid().ToString(), 
        WarehouseName = "Main Warehouse", 
        WarehouseAddress = "932 Pallet Street, La Grange (Dutchess), NY 12540" 
    },
    new WarehouseEntity() { 
        WarehouseId = Guid.NewGuid().ToString(), 
        WarehouseName = "Second Warehouse",
        WarehouseAddress = "4447 Dane Street, Yakima, WA 98908"
    },
    new WarehouseEntity() { 
        WarehouseId = Guid.NewGuid().ToString(), 
        WarehouseName = "Third Warehouse", 
        WarehouseAddress = "3003 Arrowood Drive, Jacksonville, FL 32257" 
    }
);

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;");

Aqu铆 algo de mi cosecha:
Si a ustedes les interesa esconder el connection string por cualquier raz贸n pueden realizar esto:

  1. Crear un archivo appsettings.json al mismo nivel en donde est谩 InventoryContext.cs
  2. Dentro colocan su configuraci贸n
{
  "ConnectionStrings": {
    "Local": "Server=XXX\\XX; Database=XXX; User Id=XXX; Password=XXXX"
  }
}
  1. Obtienen dicho JSON y colocan el nombre de la llave tal y como est谩 configurada dentro de ConnectionStrings
protected override void OnConfiguring(DbContextOptionsBuilder options)
        {
            if (!options.IsConfigured)
            {
		IConfigurationRoot configuration = 
				new ConfigurationBuilder()
				.SetBasePath(Path.Combine(Directory.GetCurrentDirectory()))
				.AddJsonFile("appsettings.json").Build();

			options.UseSqlServer(configuration.GetConnectionString("Local"));
            }
        }
  1. Al momento de subirlo a GitHub a帽adir el archivo JSON a .gitignore (o su equivalente en otras opciones)

Hola compa帽eros llegue a tener un problema, les comparto esto por si les llega a suceder.
Al momento de ejecutar el comando 鈥渦pdate-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 鈥淒ataAnnotations鈥 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 馃憢.

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

lo m谩ximo esta explicaci贸n, muy detallada para lograr el objetivo.

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");

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#

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" }
          );

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 les aparece este error :
鈥淎 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 鈥淭rustServerCertificate=True;鈥 al String de coneccion ejemplo :
options.UseSqlServer(
鈥淪erver=LAPTOP-HAF9RDI7;鈥 +
鈥淒atabase=InventoryDb;鈥 +
鈥淭rustServerCertificate=True;鈥 +
鈥淯ser ID=sa;鈥 +
鈥淧assword=tuclave;鈥
);

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

馃槂

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;");
        }
    }

Al ejecutar los comandos en el 鈥淧ackage 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 鈥淒ataAccess鈥 creada en este proyecto, puedes usar los siguientes comandos:

dotnet ef migrations add Init
dotnet ef database update

dotnet ef database update

Excelente

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