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

Trabajando el relacionamiento entre entidades

18/38
Recursos

Aportes 9

Preguntas 3

Ordenar por:

Los aportes, preguntas y respuestas son vitales para aprender en comunidad. Reg铆strate o inicia sesi贸n para participar.

Les comparto unos peque帽os apuntes. 馃榿

Para este caso la entidad Products (N) y Category (1) tiene una relaci贸n N:1, lo cual quiere decir lo siguiente: Una categor铆a puede estar relacionada con muchos productos.

Para realizar esta asociaci贸n en c贸digo tenemos que entender lo siguiente: La entidad que tiene la cardinalidad 1 cuanta con un conjunto datos, en este caso de la entidad 鈥淧roductEntity鈥.

public ICollection <ProductEntity> Products { get; set; }

(Nos encontramos en la entidad CategoryEntity).

La entidad con la cardinalidad N (muchos) tiene que hacer referencia al id de la tabla con la cual se relaciona e indicar el nombre de esa tabla, hay que recordar que al pasar un modelo entidad relaci贸n a relacional en una relaci贸n N:1 la llave for谩nea se coloca en la entidad con cardinalidad N.

public string CategoryId { get; set; }

public CategoryEntity Category { get; set; }

(Nos encontramos en la entidad ProductsEntity).

Espero que sea de ayuda.
Saludos 馃憢.

No estoy muy seguro seguro s铆 us茅 el razonamiento correcto al crear las relaciones, as铆 qued贸:

    public class InOutEntity
    {
        [Key]
        [StringLength(50)]
        public string InOutId { get; set; }
        [Required]
        public DateTime InOutDate { get; set; }
        [Required]
        public int Quantity { get; set; }
        [Required]
        public bool IsInput { get; set; }
        public string StorageId { get; set; }
        public StorageEntity Storage { get; set; }
    }

    public class WherehouseEntity
    {
        [Key]
        [StringLength(50)]
        public string WherehouseId { get; set; }
        [Required]
        [StringLength(100)]
        public string WherehouseName { get; set; }
        [Required]
        [StringLength(100)]
        public string WherehouseAddress { get; set; }
        public string StorageId { get; set; }
        public StorageEntity Storage { get; set; }
    }

    public class StorageEntity
    {
        [Key]
        [StringLength(50)]
        public string StorageId { get; set; }
        [Required]
        public DateTime LastUpdate { get; set; }
        [Required]
        public int PartialQuantity { get; set; }
        public string ProductId { get; set; }
        public ProductEntity Product { get; set; }
        public ICollection<WherehouseEntity> Wherehouses { get; set; }
        public ICollection<InOutEntity> InOuts { get; set; }
    }

Genial

Creo haber utilizado la l贸gica correcta. Espero que si alguien sabe del tema por favor me corrija.
CategoryEntity

public class CategoryEntity
    {
        [Key]
        [StringLength(50)]
        public string CategoryId { get; set; }

        [Required]
        [StringLength(100)]
        public string CategoryName { get; set; }
        public ICollection<ProductEntity> Products { get; set; }
    }

ProductEntity

public class ProductEntity
    {
        [Key]
        [StringLength(10)]
        public string ProductId { get; set; }
        [Required]
        [StringLength(100)]
        public string ProductName { get; set; }

        [StringLength(600)]
        public string ProductDescription { get; set; }

        public int TotalQuantity { get; set; }
        [Required]
        [StringLength(50)]
        public string CategoryId { get; set; }
        public CategoryEntity Category { get; set; }
        public ICollection<StorageEntity> Storages { get; set; }
    }

WarehouseEntity

public class WarehouseEntity
    {
        [Key]
        public string WarehouseId { get; set; }
        [Required]
        [StringLength(50)]
        public string WarehouseName { get; set; }
        [MinLength(10)]
        public string WarehouseAddress { get; set; }
        public ICollection<StorageEntity> Storages { get; set; }
    }

StorageEntity

public class StorageEntity
    {
        [Key]
        [StringLength(10)]
        public string StorageId { get; set; }
        [Required]
        public DateTime LastUpdate { get; set; }
        [Required]
        public int PartialQuantity { get; set; }
        [Required]
        public string ProductId { get; set; }
        public ProductEntity Product { get; set; }
        [Required]
        public string WarehouseId { get; set; }
        public WarehouseEntity Warehouse { get; set; }
        public ICollection<InOutsEntity> InOuts { get; set; }

    }

InOutsEntity

public class InOutsEntity
    {
        [Key]
        [StringLength(50)]
        public string InOutsId { get; set; }
        [Required]
        public DateTime InOutDate { get; set; }
        [Required]
        public int Quantity { get; set; }
        [Required]
        public bool IsInput { get; set; }
        [Required]
        public string StorageId { get; set; }
        public StorageEntity Storages { get; set; }
    }
  public class InputOutputEntity
    {
        public string InOutId { get; set; }
        public DateTime InOutDate { get; set; }
        public int Quantity { get; set; }
        public bool IsInput { get; set; }
        public string StorageId { get; set; }
        public StorageEntity Storage { get; set; }
    }```
public class StorageEntity
    {
        [Key]
        [StringLength(50)]
        public string StorageId { get; set; }
        [Required]
        public DateTime LastUpdate { get; set; }
        [Required]
        public int PartialQuantity { get; set; }
        public string ProductId { get; set; }//Identificador del producto.
        public ProductEntity Product { get; set; } //Objeto que contiene el producto.
        public string WherehouseId { get; set; }//Identificador de la bodega.
        public WherehouseEntity Wherehouse { get; set; } //Objeto que contiene la bodega.
        public ICollection<InputOutputEntity> InputOutputs { get; set; } //Lista con todos las entradas/salidas existentes.
    }
<code>public class WherehouseEntity
    {
        [Key]
        [StringLength(50)]
        public string WherehouseId { get; set; }
        [Required]
        [StringLength(100)]
        public string WherehouseName { get; set; }
        [Required]
        [StringLength(100)]
        public string WherehouseAddress { get; set; }
        public ICollection<StorageEntity> Storages { get; set; } //Lista con todos los almacenes existentes.
    }
public class InputOutputEntity
    {
        [Key]
        [StringLength(50)]
        public string InOutId { get; set; }
        [Required]
        public DateTime InOutDate { get; set; }
        [Required]
        public int Quantity { get; set; }
        [Required]
        public bool IsInput { get; set; }
        public string StorageId { get; set; }//Identificador del almacen.
        public StorageEntity Storage { get; set; }//Objeto con el almacen.
    }

Reto
![](
![](
![](

Reto:

    public class ProductEntity
    {
        [Key]
        public int ProductId { get; set; }

        [Required]
        [StringLength(50)]
        public string ProductCode { get; set; }

        [Required]
        [StringLength(100)]
        public string ProductName { get; set; }

        [StringLength(600)]
        public string ProductDescription { get; set; }

        [Required]
        public decimal ProductTotalQuantity { get; set; }
        
        [Required]
        public int CategoryId { get; set; }

        public CategoryEntity Category { get; set; }

        public ICollection<StorageEntity> Storages { get; set; }
    }

    public class StorageEntity
    {
        [Key]
        public int StorageId { get; set; }

        [Required]
        [StringLength(50)]
        public string StorageCode { get; set; }

        [Required]
        public DateTime StorageLastUpdate { get; set; }

        [Required]
        public decimal StoragePartialQuantity { get; set; }

        [Required]
        public int ProductId { get; set; }

        public ProductEntity Product { get; set; }

        [Required]
        public int WarehouseId { get; set; }

        public WarehouseEntity Warehouse { get; set; }

        public ICollection<InOutEntity> InOutEntities { get; set; }
    }

    public class WarehouseEntity
    {
        [Key]
        public int WarehouseId { get; set; }

        [Required]
        [StringLength(50)]
        public string WarehouseCode { get; set; }

        [Required]
        [StringLength(100)]
        public string WarehouseName { get; set; }

        [Required]
        [StringLength(100)]
        public string WarehouseAddress { get; set; }

        public ICollection<StorageEntity> Storages { get; set; }
    }

    public class InOutEntity
    {
        [Key]
        public int InOutId { get; set; }

        [Required]
        [StringLength(50)]
        public string InOutCode { get; set; }

        [Required]
        public DateTime InOutDate { get; set; }

        [Required]
        public decimal InOutQuantity { get; set; }

        [Required]
        public bool InOutIsInput { get; set; }

        [Required]
        public int StorageId { get; set; }

        public StorageEntity Storage { get; set; }
    }