No tienes acceso a esta clase

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

Aprende Ingl茅s, Programaci贸n, AI, Ciberseguridad y m谩s a precio especial.

Antes: $249

Currency
$209
Suscr铆bete

Termina en:

1 D铆as
23 Hrs
10 Min
55 Seg

Mapeo de modelos usando atributos

9/25
Recursos

Aportes 17

Preguntas 3

Ordenar por:

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

Como dato adicional, si quieren especificar el nombre de la tabla en la base de datos tienen que usar la anotaci贸n 鈥淭able鈥.

using System.ComponentModel.DataAnnotations.Schema;

[Table("Task")]
public class Tareas
{
...
}

Para a帽adir el archivo gitignore solamente deben ingresar el siguiente comando:
dotnet new gitignore

Me encanta el ritmo de este curso, bien explicado todo.

En la definici贸n de la llave for谩nea existen tres formas de definirla usando la anotaci贸n 鈥淔oreignKey鈥.

  1. Establecer en el atributo ForeignKey el nombre de la propiedad que apunta o hace referencia a la clase principal.
public class Tarea
{
    ...
    [ForeignKey("Categoria")]
    public Guid CategoriaId {get;set;}
    ...
    public virtual Categoria Categoria {get;set;}
    ...
}
  1. Establecer el atributo ForeignKey en la propiedad que hace referencia a la clase principal y asignar el nombre de la llave foranea (CategoriaId).
public class Tarea
{
    ...
    public Guid CategoriaId {get;set;}
    
    [ForeignKey("CategoriaId")]
    public virtual Categoria Categoria {get;set;}
    ...
}
  1. Establecer el atributo ForeignKey en la propiedad de la clase principal y asignar el nombre de la llave for谩nea de la clase dependiente.
public class Tarea
{
    ...
    public Guid CategoriaId {get;set;}
    ...
    public virtual Categoria Categoria {get;set;}
    ...
}

public class Categoria
{
    ...
    [ForeignKey("CategoriaId")]
    public virtual ICollection<Tarea> Tareas {get;set;}
}

Por otro lado, desconozco la raz贸n de utilizar la palabra reservada virtual; por lo general, el virtual se utiliza cuando hay herencia y quiero sobreescribir alguna propiedad, desde mi punto de vista utilizar virtual o no da lo mismo, espero que el profesor me pueda responder a esa inquietud

Cabe destacar que esta aproximaci贸n es Code first, tambi茅n se puede implementar Data Base first y Model first. Dejo un link de stackoverflow con un poco de informaci贸n. https://stackoverflow.com/questions/5446316/code-first-vs-model-database-first

Para los que no les sugiere los imports/usings aun con extensiones instaladas, vayan a Settings, busquen 鈥渋mport鈥 y checkeen esta opci贸n:

Ya con eso los sugiere.

Para quien quiera a帽adir el archivo .gitignore

dotnet new gitignore

Encontr茅 esta documentaci贸n sobre DataAnnotations

Code First Data Annotations

Data Annotations Attributes in EF 6 and EF Core

Asi se puede definir un tipo de manera m谩s especifica

Mapeo de modelos usando atributos


El mapeo de modelos en Entity Framework se realiza para especificar c贸mo las propiedades de las entidades corresponden a las columnas de las tablas en la base de datos. Se pueden utilizar atributos para definir la configuraci贸n de mapeo.

Aqu铆 hay un ejemplo de c贸mo se pueden mapear los modelos de entidad usando atributos en Entity Framework:

using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;

public class Category
{
    [Key]
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public int CategoryId { get; set; }
    
    [Required]
    [MaxLength(50)]
    public string Name { get; set; }
    
    public ICollection<Homework> Homework { get; set; }
}

public class Homework
{
    [Key]
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public int HomeworkId { get; set; }
    
    [Required]
    [MaxLength(50)]
    public string Name { get; set; }
    
    [Required]
    public int CategoryId { get; set; }
    
    [ForeignKey("CategoryId")]
    public Category Category { get; set; }
}
  • En este ejemplo, se utiliza el atributo Key para indicar la propiedad que es la clave primaria de cada entidad. Tambi茅n se utiliza el atributo DatabaseGenerated para especificar que el valor de la clave primaria se genera autom谩ticamente por la base de datos.
  • El atributo Required se utiliza para indicar que una propiedad es obligatoria y no puede ser nula. El atributo MaxLength se utiliza para especificar el n煤mero m谩ximo de caracteres que se pueden almacenar en una propiedad.
  • El atributo ForeignKey se utiliza para especificar la relaci贸n entre las entidades, en este caso, entre la entidad Category y la entidad Homework. Este atributo especifica que la propiedad CategoryId en la entidad Homework es una clave for谩nea que se refiere a la clave primaria de la entidad Category.

El mapeo se realiza adicionando un

using System.ComponentModel.DataAnnotations;

Las palabras clave que us贸 el profe en esta clase:

  • [Key] Define un tipo de dato primario como el ID.
  • [Required] Define un dato de uso obligatorio. El usuario deber谩 cargarlo si o si.
  • [MaxLength(<Int>)] Establece un n煤mero m谩ximo de caracteres que se podr谩n cargar en la DDBB.
  • [ForeignKey("<Str>")] Define una clave for谩nea y le da un nombre. Una clave for谩nea es un dato que se encuentra en otro documento, que es for谩neo, que es 鈥渆xtranjero鈥.
  • [NotMapped] Omite el mapeo en la base de datos de este atributo.
Hola gente, alguien sabe si hay un grupo de Discord o similar para hacer alg煤n proyecto de este tipo ? Estar铆a bien reunirnos 馃檹馃榾

No olvides usar el

using System.ComponentModel.DataAnnotations;

Parece que el .gitignore fue generado por:
gitignore.io.

![](https://static.platzi.com/media/user_upload/image-9c871ce5-d814-48ae-9357-43f7407bd506.jpg)

ForeignKey DataNotation

[ForeignKey("CategoryId")]
        public virtual Category? Categories { get; set; }```