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
{
...
}
Introducción
Bienvenida y presentación
Prerrequisitos
Conexión a base de datos
¿Qué es un ORM en programación?
Introducción a Entity Framework
Creación de proyecto .NET con Entity Framework
Iniciando con Entity Framework
Creación de modelos
Configuración de Entity Framework
Mapeo de modelos usando atributos
Utilizando base de datos en memoria
Conectado a base de datos SQL server
Agregando conexión al archivo appsettings
Utilizando Fluent API
Introducción a Fluent API
Creando modelo de categoría con Fluent API
Creando modelo de tarea con Fluent API
Conectado a base de datos con Fluent API
Migraciones
¿Qué son las migraciones?
Inicializar las migraciones
Creando una migración
Agregando datos semilla
Consumo de datos
Obteniendo datos con Entity Framework
Guardando datos con Entity framework
Actualizando datos con Entity framework
Eliminando datos con Entity framework
Cierre del curso
Continúa tu camino desarrollando
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
Paga en 4 cuotas sin intereses
Termina en:
Miguel Teheran
Aportes 17
Preguntas 4
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”.
public class Tarea
{
...
[ForeignKey("Categoria")]
public Guid CategoriaId {get;set;}
...
public virtual Categoria Categoria {get;set;}
...
}
public class Tarea
{
...
public Guid CategoriaId {get;set;}
[ForeignKey("CategoriaId")]
public virtual Categoria Categoria {get;set;}
...
}
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
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
Para quien quiera añadir el archivo .gitignore
dotnet new gitignore
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; }
}
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.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.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:
No olvides usar el
using System.ComponentModel.DataAnnotations;
Parece que el .gitignore fue generado por:
gitignore.io.
ForeignKey DataNotation
[ForeignKey("CategoryId")]
public virtual Category? Categories { get; set; }```
¿Quieres ver más aportes, preguntas y respuestas de la comunidad?