Creación y configuración de un modeloCreating and configuring a Model

Entity Framework usa un conjunto de convenciones para compilar un modelo basado en la forma de las clases de entidad.Entity Framework uses a set of conventions to build a model based on the shape of your entity classes. Puede especificar una configuración adicional para complementar o reemplazar lo que se ha detectado por convención.You can specify additional configuration to supplement and/or override what was discovered by convention.

Este artículo trata de la configuración que se puede aplicar a un modelo para cualquier almacén de datos y que se puede aplicar al elegir como destino cualquier base de datos relacional.This article covers configuration that can be applied to a model targeting any data store and that which can be applied when targeting any relational database. Los proveedores también pueden habilitar la configuración específica de un almacén de datos determinado.Providers may also enable configuration that is specific to a particular data store. Para obtener documentación sobre la configuración específica del proveedor, vea la sección  Proveedores de bases de datos .For documentation on provider specific configuration see the Database Providers section.

Sugerencia

Puede ver un  ejemplo  de este artículo en GitHub.You can view this article’s sample on GitHub.

Uso de la API fluida para configurar un modeloUse fluent API to configure a model

Puede reemplazar el método  OnModelCreating  del contexto derivado y usar  ModelBuilder API para configurar el modelo.You can override the OnModelCreating method in your derived context and use the ModelBuilder API to configure your model. Este es el método más eficaz de configuración y permite especificar la configuración sin modificar las clases de entidad.This is the most powerful method of configuration and allows configuration to be specified without modifying your entity classes. La configuración de API fluida tiene la prioridad más alta y reemplaza las anotaciones de datos y las convenciones.Fluent API configuration has the highest precedence and will override conventions and data annotations.

using Microsoft.EntityFrameworkCore;

namespace EFModeling.Configuring.FluentAPI.Samples.Required
{
    class MyContext : DbContext
    {
        public DbSet<Blog> Blogs { get; set; }

        protected override void OnModelCreating(ModelBuilder modelBuilder)
        {
            modelBuilder.Entity<Blog>()
                .Property(b => b.Url)
                .IsRequired();
        }
    }

    public class Blog
    {
        public int BlogId { get; set; }
        public string Url { get; set; }
    }
}

Uso de anotaciones de datos para configurar un modeloUse data annotations to configure a model

También puede aplicar atributos (conocidos como anotaciones de datos) a las clases y las propiedades.You can also apply attributes (known as Data Annotations) to your classes and properties. Las anotaciones de datos reemplazarán a las convenciones, pero la configuración de la API fluida también las reemplazará.Data annotations will override conventions, but will be overridden by Fluent API configuration.

using Microsoft.EntityFrameworkCore;
using System.ComponentModel.DataAnnotations;

namespace EFModeling.Configuring.DataAnnotations.Samples.Required
{
    class MyContext : DbContext
    {
        public DbSet<Blog> Blogs { get; set; }
    }

    public class Blog
    {
        public int BlogId { get; set; }
        [Required]
        public string Url { get; set; }
    }
}