Каждая сущность по умолчанию сопоставляется с таблицей, которая называется по имени свойства DbSet<T> в контексте данных, представляющего данную сущность. Если в контексте данных подобного свойства не определено, то для названия таблицы используется имя класса сущности.
Атрибут Table позволяет переопределить сопоставление с таблицей по имени:
using System.ComponentModel.DataAnnotations.Schema; [Table("People")] public class User { public int Id { get; set; } public string? Name { get; set; } }
Теперь сущность User будет сопоставляться с таблицей "People".
Аналогичное переопределение можно произвести через Fluent API с помощью метода ToTable():
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) { modelBuilder.Entity<User>().ToTable("People"); } } public class User { public int Id { get; set; } public string? Name { get; set; } }
С помощью дополнительного параметра schema можно определить схему, к которой будет принадлежать таблица:
modelBuilder.Entity<User>().ToTable("People", schema: "userstore");
По умолчанию каждое свойство сопоставляется с одноименным столбцом.
Атрибут Column переопределяет сопоставление:
public class User { [Column("user_id")] public int Id { get; set; } public string? Name { get; set; } }
Теперь свойство Id будет сопоставляться со столбцом "user_id".
Также сопоставление можно переопределить в Fluent API с помощью метода HasColumnName:
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) { modelBuilder.Entity<User>().Property(u => u.Id).HasColumnName("user_id"); } } public class User { public int Id { get; set; } public string? Name { get; set; } }