Создание модели в Entity Framework Core

Fluent API и аннотации данных

Последнее обновление: 17.11.2021

Модель в Entity Framework представляет набор всех сущностей и связей между ними, которыми управляет контекст данных. Все сущности, с которыми работает Entity Framework Core и которые хранятся в базе данных, определяются в C# в виде классов. При этом Entity Framework применяет ряд условностей для сопоставления классов с таблицами. Например, названия столбцов должны соответствовать названиям свойств и т.д. В этом случае Entity Framework сможет сопоставить столбцы таблицы и свойства классов.

Однако с помощью таких механизмов, как Fluent API и аннотации данных мы можем добавить дополнительные правила конфигурации, либо переопределить используемые условности.

Fluent API

Fluent API представляет набор методов, которые определяют сопоставление между классами и их свойствами и таблицами и их столбцами. Для использования функционала Fluent API переопределяется метод OnModelCreating():

using Microsoft.EntityFrameworkCore;

public class ApplicationContext : DbContext
{
    public DbSet<User> Users { get; set; } = null!;
    public ApplicationContext()
    {
        Database.EnsureDeleted();
        Database.EnsureCreated();
    }
    protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
    {
        optionsBuilder.UseSqlite("Data Source=helloapp.db");
    }
    protected override void OnModelCreating(ModelBuilder modelBuilder)
    {
        // использование Fluent API
        base.OnModelCreating(modelBuilder);
    }
}

Аннотации

Аннотации представляют настройку классов сущностей с помощью атрибутов. Большинство подобных атрибутов располагаются в пространстве System.ComponentModel.DataAnnotations, которое нам надо подключить перед использованием аннотаций. Например:

using System.ComponentModel.DataAnnotations.Schema;

public class User
{
    [Column("user_id")]
    public int Id { get; set; }
    public string? Name { get; set; }
    public int Age { get; set; }
}

В данном случае атрибут Column представляет аннотацию, которая указывает, что свойство Id будет сопоставляться со столбцом "user_id" (а не Id, как бы было по умолчанию).

Таким образом, мы можем использовать три подхода к определению модели:

  • Условности (conventions)

  • Fluent API

  • Аннотации данных

Помощь сайту
Юмани:
410011174743222
Перевод на карту
Номер карты:
4048415020898850