Данное руководство устарело. Актуальное руководство: Руководство по Entity Framework Core 7
Все сущности, с которыми работает EntityFramework Core, определяются в виде классов моделей. При этом EF Core использует ряд условностей для сопоставления классов моделей с таблицами. Например, названия столбцов должны соответствовать названиям свойств и т.д. В этом случае Entity Framework сможет сопоставить столбцы таблицы и свойства модели.
Однако с помощью таких механизмов, как Fluent API и аннотации данных мы можем добавить дополнительные правила конфигурации, либо переопределить используемые условности.
Fluent API представляет набор методов, которые определяют сопоставление между классами и их свойствами и таблицами и их столбцами. Как правило, функционал Fluent API задействуется при переопределении метода OnModelCreating:
public class ApplicationContext : DbContext { public DbSet<User> Users { get; set; } public ApplicationContext() { Database.EnsureCreated(); } protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) { optionsBuilder.UseSqlServer(@"Server=(localdb)\mssqllocaldb;Database=helloappdb;Trusted_Connection=True;"); } protected override void OnModelCreating(ModelBuilder modelBuilder) { // использование Fluent API base.OnModelCreating(modelBuilder); } }
Аннотации представляют настройку классов моделей с помощью атрибутов. Большинство подобных атрибутов располагаются в пространстве
System.ComponentModel.DataAnnotations
, которое нам надо подключить в файл c# перед использованием аннотаций. Например:
using System.ComponentModel.DataAnnotations; namespace HelloApp { public class User { public int Id { get; set; } [Required] public string Name { get; set; } public int Age { get; set; } } }
В данном случае атрибут Required
представляет аннотацию, которая указывает, что свойство Name обязательно должно иметь значение.
Таким образом, мы можем использовать три подхода к определению моделей:
Условности (conventions)
Fluent API
Аннотации данных