博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
5.Inheritance Strategy(继承策略)【EFcode-first系列】
阅读量:6309 次
发布时间:2019-06-22

本文共 1661 字,大约阅读时间需要 5 分钟。

我们已经在code-first 约定一文中,已经知道了Code-First为每一个具体的类,创建数据表。

但是你可以自己利用继承设计领域类,面向对象的技术包含“has a”和“is a”的关系即,有什么,是什么,的关系,但是基于SQL关系的实体和数据表集合之前,只是有“has a ”的关系。数据库管理系统(SQL database management systems)不支持继承类型,所以,你怎么将面向对象的领域实体和关系型的数据库映射在一起呢???

 

下面有三种方式,在Code-First中表现继承:

  • Table per Hierarchy (TPH): This approach suggests one table for the entire class inheritance hierarchy. Table includes discriminator column which distinguishes between inheritance classes. This is a default inheritance mapping strategy in Entity Framework.

      这种方式,推荐一个表作为整个类的继承层次结构。这个表包含监听列可以和继承类之间很好的区分开来。这个是EF中默认的继承策略。

  • Table per Type (TPT): This approach suggests a separate table for each domain class.

      这个方式,推荐给每一个领域类创建一个单独的表。

  • Table per Concrete class (TPC): This approach suggests one table for one concrete class, but not for the abstract class. So, if you inherit the abstract class in multiple concrete classes, then the properties of the abstract class will be part of each table of the concrete class.

     这个方式,推荐为每一个具体的类,创建一个表,但是抽象类除外。因此如果你在多个具体的类中,继承了抽象类的话,那么这个抽象类的属性将会是每一个具体的类(表)的属性的一部分。

 

我们在这里不做过多深入的了解,如果想了解更深入的技术,请看:

We are not going into detail here. Visit the following reference link for more detailed information:

We have seen default Code First conventions in the previous section. Learn how to configure domain classes in order to override these conventions in the next section.

在之前的环节中,我们已经看到了Code-First默认约定,下面一节,让我们来学一下怎么来配置我们的领域类,为了能够打破默认约定。

PS:这个继承的部分,我后面会深入看下里面的技术,然后翻译出来。请大家多多支持!!!

 

附上目录:

  • DataAnnotations(数据注解)
  • Fluent API
  • Configure One-to-One(配置一对一关系)
  • Configure One-to-Many(配置一对多关系)
  • Configure Many-to-Many(配置多对多关系)
  • Move Configurations(数据迁移)
  • DB Initialization Strategy(数据库初始化策略)
  • ...待续.....

 

转载地址:http://oxxxa.baihongyu.com/

你可能感兴趣的文章
Notepad++配置Python开发环境
查看>>
用户组概念 和 挂载 概念
查看>>
如何快速获取ADO连接字符串
查看>>
AspNetPager控件的最基本用法
查看>>
sessionKey
查看>>
高性能Javascript--脚本的无阻塞加载策略
查看>>
Java 编程的动态性, 第4部分: 用 Javassist 进行类转换--转载
查看>>
完毕port(CompletionPort)具体解释 - 手把手教你玩转网络编程系列之三
查看>>
iOS8 Push Notifications
查看>>
各大名企笔试及面经大全(程序猿必读)
查看>>
Oracle 连接、会话数的查看,修改
查看>>
Python使用QRCode模块生成二维码
查看>>
英语学习的重要性
查看>>
Android中Handler引起的内存泄露
查看>>
原产地政策,jsonp跨域
查看>>
HDU 1143 Tri Tiling(递归)
查看>>
ffmpeg参数具体解释
查看>>
记一次公司仓库数据库服务器死锁过程
查看>>
Oracle 11g password过期被锁定报道 ORA-28000 the account is locked
查看>>
【Struts2学习笔记(2)】Action默认值和配置Action于result各种转发类型
查看>>