Данное руководство устарело. Актуальное руководство: Руководство по Entity Framework Core 7
По умолчанию провайдер определенной СУБД выбирает для столбцов типы данных на основе типов данных свойств сущности.
Если в качестве целевой СУБД используется MS SQL Server, то типы SQL Serverа и C# сопоставляются следующим образом:
int : int
bit : bool
char : string
date : DateTime
datetime : DateTime
datetime2 : DateTime
decimal : decimal
float : double
money : decimal
nchar : string
ntext : string
numeric : decimal
nvarchar : string
real : float
smallint : short
text : string
tinyint : byte
varchar : string
Например, по умолчанию Entity Framework для свойства с типом string будет использовать столбец с типом nvarchar.
В провайдерах для других СУБД система сопоставления типов может отличаться.
С помощью атрибута Column можно задать тип данных для бд:
public class User { public int Id { get; set; } [Column(TypeName = "varchar(200)")] public string Name { get; set; } }
В Fluent API для подобной задачи применяется метод HasColumnType:
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.Name).HasColumnType("varchar(200)"); } 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; } }