Criar e configurar um modeloCreating and configuring a Model

O Entity Framework usa um conjunto de convenções para criar um modelo com base na forma de suas classes de entidade.Entity Framework uses a set of conventions to build a model based on the shape of your entity classes. Você pode especificar configurações adicionais para complementar e/ou substituir o que foi descoberto por convenção.You can specify additional configuration to supplement and/or override what was discovered by convention.

Este artigo aborda a configuração que pode ser aplicada a um modelo que tenha como destino qualquer armazenamento de dados e que possa ser aplicado ao ter qualquer banco de dados relacional como destino.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. Os provedores também podem habilitar configuração específica de um armazenamento de dados em particular.Providers may also enable configuration that is specific to a particular data store. Para mais informações sobre a configuração específica do provedor, consulte a seção Provedor de Banco de Dados .For documentation on provider specific configuration see the Database Providers section.

Dica

Veja o exemplo deste artigo no GitHub.You can view this article’s sample on GitHub.

Usar a API fluente para configurar um modeloUse fluent API to configure a model

Você pode modificar o método OnModelCreating no contexto derivado e usar o ModelBuilder API para configurar seu modelo.You can override the OnModelCreating method in your derived context and use the ModelBuilder API to configure your model. Este é o método mais eficiente de configuração e permite que a configuração seja especificada sem modificação de suas classes de entidade.This is the most powerful method of configuration and allows configuration to be specified without modifying your entity classes. A configuração da API fluente tem a precedência mais alta e substituirá as anotações de dados e as convenções.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; }
    }
}

Usar anotações de dados para configurar um modeloUse data annotations to configure a model

Você também pode aplicar atributos (conhecidos como Anotações de Dados) a classes e propriedades.You can also apply attributes (known as Data Annotations) to your classes and properties. As anotações de dados substituirão as convenções, mas serão substituídas pela configuração da API Fluente.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; }
    }
}