Данное руководство устарело. Актуальное руководство: Руководство по Entity Framework Core
При создании таблиц и их столбцов в базе данных в Entity Framework по умолчанию действуют некоторые соглашения по именованию, которые указывают, какие имена должны быть у таблиц, столбцов, какие типы и т.д. Рассмотрим некоторые из этих соглашений.
Типы 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
Все первичные ключи по умолчанию имеют определение NOT NULL.
Столбцы, сопоставляемые со свойствами ссылочных типов (string, array), в базе данных имеют определение NULL, а все значимые типы (DateTime, bool, char, decimal, int, double, float) - NOT NULL.
Если свойство имеет тип Nullable<T>
, то оно сопоставляется со столбцом с определением NULL.
Entity Framework требует наличия первичного ключа, так как это позволяет ему отслеживать объекты. По умолчанию в качестве ключей EF рассматривает свойства с именем Id или [Название_типа]Id (например, PostId в классе Post).
Как правило, ключи имеют тип int
или GUID
, но также могут представлять и любой другой примитивный тип.
С помощью специального класса PluralizationService Entity Framework проводит сопоставление между именами классов моделей и именами таблиц. При этом таблицы получают по умолчанию в качестве названия множественное число в соответствии с правилами английского языка, например, класс User - таблица Users, класс Person - таблица People (но не Persons!).
Названия столбцов получают названия свойств модели.
Если нас не устраивают названия таблиц и столбцов по умолчанию, то мы можем переопределить данный механизм с помощью Fluent API или аннотаций.