Entity Framework Core 之Modeling Relational Database Modeling

该模块主要是针对关系型数据库进行建模

Table Mapping (表的映射)

按照约定每一个实体都默认根据实体名称作为表名映射到数据库中,但是也可手工指定

DataAnnotations:TableAtrribute代表数据库表

FluentAPI:将CLR实体类型映射到数据库中的特定表

 

Column Mapping (列映射)

按照约定,实体中每一个属性都将以他们的名称为数据库列名存储,但可指定特定名词

DataAnnotationsColumnAtrribute 代表指定列名

 

FluentAPI

 

Data Types (数据类型)

默认情况下数据提供者将根据实体的CLR类型选择合适的数据库中数据类型来存储相应的实体信息。如SQLServer使用datetime2(7) for DateTime properties, and nvarchar(max) for string properties (or nvarchar(450) for string

DataAnnotations

 

FluentAPI

 

也可以指定特定的数据提供者中的类型

 

Primary Keys

可参照上一节中Key Primary (主键)

Default Schema

若是没有显示指定数据库框架,则会采用默认框架。通常默认框架根据数据库提供者来决定的,如SQL Server采用dbo框架,而SQLite不采用框架,选择默认框架只能通过FlentAPI来设置:

 

Computed Columns (计算列)

计算列就是数据库的某一列不要赋值,它是通过其他列的数据计算而得

FluentAPI

 

Sequences (序列)

序列就是在数据库中指定一列用来递增的数据,不跟表关联,只是用来表示序号。

FluentAPI可指定序列的开始值、递增量和默认值

 

Default Values (默认值)

可为实体模型对象的属性指定默认值,若是未给实体赋值,则采用默认值填充数据库

FluentAPI

 

同样也可以指定SQL函数来获取默认值

 

Indexes

可参上述照Indexes(索引)

Foreign Key Constraints(外键约束)

默认情况下在依赖体中显式存在外键属性时,则不需要采用特性形式标记导航属性,EF会自动根据外键属性匹配主体的主键作为外键;当按照约定没有发现外键属性时,则采用手动设置特性外键

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)来为每一行记录做标识

 

FluentAPI

原文地址:https://www.cnblogs.com/Terrece/p/8064735.html