原文地址:http://www.entityframeworktutorial.net/code-first/inheritance-strategy-in-code-first.aspx

EF 6 Code-First系列文章目录:

我们已经在Code-First 默认约定中学习到,EF将会为每一个具体的领域类创建数据库表。然而,你可以使用继承来设计你的领域类。面向对象技术包含一个has a和 is a的关系,然而基于SQL的关系模型,在数据表之间只有 has a关系。SQL 数据库管理系统不支持类型的继承,那么怎么来映射面向对象设计的领域类和关系型数据库呢?

在Code-First模式中,有3种不同的方法,来实现继承层级关系。

  1. Table per Hierarchy (TPH):这种方法建议是为整个类的继承层级,创建一个表。【例如Student实体,继承了BaseEntity实体(包含3个属性:ID、AddedDate、ModifiedDate),那么到时候就还是生成一个Students表,只不过Students表里面包含BaseEntity实体的这三个属性列】。这个方法创建的表,包含一个鉴定列,可以区分类之间的继承关系。这个方法也是EF中默认的继承映射策略。
  2. Table per Type (TPT):这种方法,建议为每个单独的领域类,创建一个单独的数据库表。
  3. Table per Concrete Class (TPC):这个方法建议为每一个具体的类,创建一个数据库表,但是抽象类除外。所以,如果你在多个具体的类中继承了抽象类,那么抽象类的属性就会在每个具体类所生成的数据表中。

这里我们不会详细介绍这三种方法。想要了解更多详细细节,请访问下面的三个链接:

  1. Inheritance with EF Code First: Table per Hierarchy (TPH)
  2. Inheritance with EF Code First: Table per Type (TPT)
  3. Inheritance with EF Code First: Table per Concrete class (TPC)

大家请注意:这三篇文章,我后面会翻译。谢谢大家支持。

7.翻译系列:EF 6中的继承策略(EF 6 Code-First 系列)的更多相关文章

  1. EF CodeFirst系列(3)---EF中的继承策略(暂存)

    我们初始化数据库一节已经知道:EF为每一个具体的类生成了数据库的表.现在有了一个问题:我们在设计领域类时经常用到继承,这能让我们的代码更简洁且容易管理,在面向对象中有“has  a”和“is a”关系 ...

  2. 20.2.翻译系列:EF 6中基于代码的数据库迁移技术【EF 6 Code-First系列】

    原文链接:https://www.entityframeworktutorial.net/code-first/code-based-migration-in-code-first.aspx EF 6 ...

  3. 20.1翻译系列:EF 6中自动数据迁移技术【EF 6 Code-First系列】

    原文链接:https://www.entityframeworktutorial.net/code-first/automated-migration-in-code-first.aspx EF 6 ...

  4. 20.翻译系列:Code-First中的数据库迁移技术【EF 6 Code-First系列】

    原文链接:https://www.entityframeworktutorial.net/code-first/migration-in-code-first.aspx EF 6 Code-First ...

  5. 19.翻译系列:EF 6中定义自定义的约定【EF 6 Code-First约定】

    原文链接:https://www.entityframeworktutorial.net/entityframework6/custom-conventions-codefirst.aspx EF 6 ...

  6. 16.翻译系列:EF 6 Code -First中使用存储过程【EF 6 Code-First系列】

    原文链接:https://www.entityframeworktutorial.net/entityframework6/code-first-insert-update-delete-stored ...

  7. 15.翻译系列:EF 6中的级联删除【EF 6 Code-First 系列】

    原文链接:https://www.entityframeworktutorial.net/code-first/cascade-delete-in-code-first.aspx EF 6 Code- ...

  8. 11.翻译系列:在EF 6中配置一对零或者一对一的关系【EF 6 Code-First系列】

    原文链接:https://www.entityframeworktutorial.net/code-first/configure-one-to-one-relationship-in-code-fi ...

  9. 5.翻译系列:EF 6中数据库的初始化(EF 6 Code-First 系列)

    原文地址:http://www.entityframeworktutorial.net/code-first/database-initialization-in-code-first.aspx EF ...

随机推荐

  1. 新建asp.net core项目

    开发环境:Windows Server R2 2008 开发工具:Microsoft Visual Studio 2017 新建asp.net core项目 创建web项目时,务必选择“ASP.NET ...

  2. floor()函数 和round()函数的区别

    floor()函数 和round()函数的区别 2018-08-17  09:40:00 1.floor()函数:取整,保留整数部分,舍弃小数部分. 2.round()函数:四舍五入.round(x, ...

  3. 083 HBase的完全分布式的搭建与部署,以及多master

    一:前提准备 1.设置时间同步 2.清空logs,datas 3.格式化集群 bin/hdfs namenode -format 4.重启集群 sbin/start-dfs.sh sbin/start ...

  4. MAC下通过改apache配置文件切换php多版本的方法

    网上关于php版本切换的文章有很多,但测试发现有很多都不行,所以不如自己想办法实现了,所以下面这篇文章主要给大家介绍了在MAC系统下通过改apache配置文件的方法来使php多版本切换的相关资料,需要 ...

  5. SQL try

    BEGIN TRY -- Generate a constraint violation error. DELETE FROM Production.Product ; END TRY BEGIN C ...

  6. CSDN 个性 博客 栏目 自定义 栏目 酷炫 音乐 视频

    韩梦飞沙  韩亚飞  313134555@qq.com  yue31313  han_meng_fei_sha 自定义 栏目 酷炫 音乐 视频 ========

  7. php urlencode函数 (中文字符转换为十六进制)

    urlencode()函数原理就是首先把中文字符转换为十六进制,然后在每个字符前面加一个标识符%. urldecode()函数与urlencode()函数原理相反,用于解码已编码的 URL 字符串,其 ...

  8. [BalticOI2014]Friends/[BZOJ4287]新三个和尚

    [BalticOI2014]Friends/[BZOJ4287]新三个和尚 题目大意: 一个字符串\(A\),将\(A\)复制一遍并在任意位置插入一个新字符得到\(B\).给出\(B(|B|\le2\ ...

  9. linux和CentOS下网卡启动、配置等ifcfg-eth0教程(转自)

    转自:http://www.itokit.com/2012/0415/73593.html it 动力总结系统安装好后,通过以下二个步骤就可以让你的系统正常上网(大多正常情况下).步骤1.配置/etc ...

  10. nginx image_filter 配置记录

    nginx_image_filter http_image_filter_module 配置 ---------------------------------- 第一种: //官方配置 locati ...