该模块主要是针对关系型数据库进行建模
Table Mapping (表的映射)
按照约定每一个实体都默认根据实体名称作为表名映射到数据库中,但是也可手工指定
l DataAnnotations:TableAtrribute代表数据库表
l FluentAPI:将CLR实体类型映射到数据库中的特定表
Column Mapping (列映射)
按照约定,实体中每一个属性都将以他们的名称为数据库列名存储,但可指定特定名词
l DataAnnotations:ColumnAtrribute 代表指定列名
l FluentAPI
Data Types (数据类型)
默认情况下数据提供者将根据实体的CLR类型选择合适的数据库中数据类型来存储相应的实体信息。如SQLServer使用datetime2(7) for DateTime properties, and nvarchar(max) for string properties (or nvarchar(450) for string
l DataAnnotations
l FluentAPI
也可以指定特定的数据提供者中的类型
Primary Keys
可参照上一节中Key Primary (主键)
Default Schema
若是没有显示指定数据库框架,则会采用默认框架。通常默认框架根据数据库提供者来决定的,如SQL Server采用dbo框架,而SQLite不采用框架,选择默认框架只能通过FlentAPI来设置:
Computed Columns (计算列)
计算列就是数据库的某一列不要赋值,它是通过其他列的数据计算而得
l FluentAPI
Sequences (序列)
序列就是在数据库中指定一列用来递增的数据,不跟表关联,只是用来表示序号。
l FluentAPI:可指定序列的开始值、递增量和默认值
Default Values (默认值)
可为实体模型对象的属性指定默认值,若是未给实体赋值,则采用默认值填充数据库
l FluentAPI
同样也可以指定SQL函数来获取默认值
Indexes
可参上述照Indexes(索引)
Foreign Key Constraints(外键约束)
默认情况下在依赖体中显式存在外键属性时,则不需要采用特性形式标记导航属性,EF会自动根据外键属性匹配主体的主键作为外键;当按照约定没有发现外键属性时,则采用手动设置特性外键
l FluentAPI:EF Core中不支持DataAnnotations
默认情况外键约束的名称格式是FK_<dependent type name>_<principal type name>_<foreign key property name>,可手工指定
Alternate Keys(Unique Constraints)
唯一约束包含于每个模型中的唯一键中,默认情况下唯一约束命名以AK_<type name>_<property name>格式,且唯一约束只能通过FluentAPI进行设置
Inheritance(Relational Database)
默认情况继承映射数据库将采用Table-per-Hierarchy(TPH)模式。TPH即采用一张表存储子类和父类的所有属性,父类将不另外用表存储,通过单独的鉴别列(Discriminator)来为每一行记录做标识
l FluentAPI