Данное руководство устарело. Актуальное руководство: Руководство по Entity Framework Core 7
По умолчанию каждая сущность сопоставляется с таблицей, которая называется по имени свойства 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():
public class ApplicationContext : DbContext { public DbSet<User> Users { get; set; } public ApplicationContext() { Database.EnsureDeleted(); Database.EnsureCreated(); } protected override void OnModelCreating(ModelBuilder modelBuilder) { modelBuilder.Entity<User>().ToTable("People"); } protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) { optionsBuilder.UseSqlServer(@"Server=(localdb)\mssqllocaldb;Database=helloappdb;Trusted_Connection=True;"); } } 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:
public class ApplicationContext : DbContext { public DbSet<User> Users { get; set; } public ApplicationContext() { Database.EnsureDeleted(); Database.EnsureCreated(); } protected override void OnModelCreating(ModelBuilder modelBuilder) { modelBuilder.Entity<User>().Property(u=>u.Id).HasColumnName("user_id"); } protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) { optionsBuilder.UseSqlServer(@"Server=(localdb)\mssqllocaldb;Database=helloappdb;Trusted_Connection=True;"); } } public class User { public int Id { get; set; } public string Name { get; set; } }