Типы данных

Данное руководство устарело. Актуальное руководство: Руководство по Entity Framework Core 7

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

По умолчанию провайдер определенной СУБД выбирает для столбцов типы данных на основе типов данных свойств сущности.

Если в качестве целевой СУБД используется 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

В 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; }
}
Помощь сайту
Юмани:
410011174743222
Перевод на карту
Номер карты:
4048415020898850