• 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

  • 相关阅读:
    队列:队列在线程池等有限资源池中的应用
    栈:如何实现浏览器的前进和后退
    如何优雅的写出链表?
    数据结构与算法之美(python)(课程整理A-02)
    数据结构与算法之美(python)(课程整理A-01)
    django 数据库迁移成功 但是表没有创建
    beego框架学习-000001(go get下载速度过慢、导包及其初始化问题)
    【转载】HTML5自定义data属性
    【转载】OAuth的机制原理讲解及开发流程
    浏览器的同源策略
  • 原文地址:https://www.cnblogs.com/Terrece/p/8064735.html
Copyright © 2020-2023  润新知