每天学一点,每天积累一点,进步就不止一点点!PS:好记性不如烂笔头,学会总结,学会思考~~~ ----要飞翔,必须靠自己!

灰太狼的梦想

好记性不如烂笔头,学会总结,学会思考~~~

7.翻译系列:EF 6中的继承策略(EF 6 Code-First 系列)

       原文地址: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)

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

posted @ 2019-04-01 22:51 灰太狼的梦想 阅读(...) 评论(...) 编辑 收藏