No tienes acceso a esta clase

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

No se trata de lo que quieres comprar, sino de quién quieres ser. Aprovecha el precio especial.

Antes: $249

Currency
$209

Paga en 4 cuotas sin intereses

Paga en 4 cuotas sin intereses
Suscríbete

Termina en:

15 Días
4 Hrs
9 Min
35 Seg

Mapeo de modelos usando atributos

9/25
Recursos

Aportes 17

Preguntas 4

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 “Table”.

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 “ForeignKey”.

  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 “import” y checkeen esta opción:

Ya con eso los sugiere.

Encontré esta documentación sobre DataAnnotations

Code First Data Annotations

Data Annotations Attributes in EF 6 and EF Core

Para quien quiera añadir el archivo .gitignore

dotnet new gitignore

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.

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

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 “extranjero”.
  • [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; }```