Relationships (关系)

关系定义了两个实体之间的联系,在数据库关系中用外键约束来表示两个实体之间的联系。默认情况下若在模型类型中发现了导航属性就会创建关系。最常见的关系模式是导航属性定义两端的关系,外键属性定义两者之间的依赖。

1)         术语定义

Dependent entity依赖实体,包含外键属性的实体,在关系中称为孩子的一方

Principal entity主体实体,包含主键/候补键的实体,在关系中成为父亲的一方

Foreign key外键,在依赖实体中的属性,用于存储主体实体中的主键值

Principal key主体键,在主体实体中唯一属性,用于存储主键或候补键

Navigation property导航属性,在主体或依赖体重定义的属性,用于关联两者

Collection navigation property集合导航属性,引用多个实体集合的导航属性

Reference navigation property参考导航属性,引用单个实体的导航属性

Inverse navigation property逆导航属性,在主体与依赖体中互相导航的属性

下面代码展示了Blog模型对象类与Post类之间一对多的关系

Post 是一个依赖实体

Blog 是一个主体实体

Post.BlogId 是一个外键

Blog.BlogId 是一个主体键 (在此更多代表的是主键,而非候补键)

Post.Blog是一个reference navigation property

Blog.Posts是一个 collection navigation property

Post.Blog 是 the inverse navigation property of Blog.Posts

2)         完全定义的关系(Fully Defined Relationships)

最普通的关系模式是在两个关系实体中都定义导航属性互相导航,且在依赖实体类中定义外键属性。当在两个实体中定义导航属性,则互为逆向导航;当依赖实体类中包含以下格式的属性时<primary key property name>,<navigation property name><primary key property name>, or<principal entity name><primary key property name>都将此类属性默认为外键属性。

3)         没有外键的属性(No Foreign Key Property)

可在一个依赖实体中定义一个外键属性且非必需的。若没有发现外键属性,一个引用外键属性将被同样定义<navigation property name><principal key property name>

4)         单向导航属性(Single Navigation Property)

当只有一个导航属性,没有逆向导航和外键属性时,可选择单个导航属性。单向导航属性存在时,可以使用它Fluent API来标志两者关系。

5)         关系之间的Data Annotations

在关系中可以用2种数据特性来标识关系,分别是[ForeignKey] and [InverseProperty]

以下是通过ForeignKey来标识导航属性的外键

通过逆向导航数据特性来标识主体实体和依赖实体之间的导航信息[InverseProperty]

6)         关系之间的Fluent API

通过导航属性识别的关系,用HasOne or HasMany标识需要配置的导航属性,然后通过WithOne or WithMany继续链接来配置逆向导航属性

One-to-One Relationship

1:1的关系在两个关联实体中分别都有一个关联导航属性,但是在依赖实体中必须显式有一个外键属性来标识,另一个则是主体实体

Many-To-Many Relationship

多对多的关系无法通过两个实体直接关联,可以借助第三个实体来关联两个多对多的实体。

转载于:https://www.cnblogs.com/Terrece/p/8029625.html

Entity Framework Core 之Modeling Relationships相关推荐

  1. “幕后英雄”之Backing Fields【Microsoft Entity Framework Core随笔】

    刘德华 有一首歌叫<马桶>,其中有一句歌词是:每一个马桶都是英雄. EFCore也有一个英雄,在幕后默默地任劳任怨.它就叫 "支持字段" (Backing Fields ...

  2. Entity Framework Core 2.0的新特性

    虽然EF Core 2.0存在大量槽点,但是它也给出了不少亮点.在本文中,我们将介绍这次发布版的部分亮点. \\ 数据库表切分(Table Splitting) \\ ORM常被吐槽是总是对所请求数据 ...

  3. ABP官方文档翻译 9.2 Entity Framework Core

    Entity Framework Core 介绍 DbContext 配置 在Startup类中 在模块PreInitialize方法中 仓储 默认仓储 自定义仓储 应用程序特定基础仓储类 自定义仓储 ...

  4. Entity Framework Core 2.0 使用入门

    本文转载自作者:晓晨Master(李志强) 原文章地址 https://www.cnblogs.com/stulzq/p/7717873.html 一.前言 Entity Framework(后面简称 ...

  5. Entity Framework Core介绍(1)

    介绍 Entity Framework (EF) Core 是轻量化.可扩展和跨平台版的常用 Entity Framework 数据访问技术. EF Core 可用作对象关系映射程序 (O/RM),以 ...

  6. oracle精简版_使用Entity Framework Core访问数据库(Oracle篇)

    前言 哇..看看时间 真的很久很久没写博客了 将近一年了. 最近一直在忙各种家中事务和公司的新框架  终于抽出时间来更新一波了. 本篇主要讲一下关于Entity Framework Core访问ora ...

  7. 在 .NET Core 中如何让 Entity Framework Core 在日志中记录由 LINQ 生成的SQL语句

    在开发中,我们想在调试中查看EF Core执行的sql语句,可以使用SQL Studio Manager Tools工具,另一种方式是使用EF Core提供的日志.在ASP.NET Core使用Ent ...

  8. Entity Framework Core 6.0 预览4 性能改进

    起因 微软在Build2021开发者大会上,发布Entity Framework Core 6.0(简称EFCore 6)预览第四版,号称是性能版本,性能提升主要对于Entity Framework  ...

  9. Entity Framework Core 5中实现批量更新、删除

    本文介绍了一个在EntityFramework Core 5中不需要预先加载数据而使用一句SQL语句批量更新.删除数据的开发包,并且分析了其实现原理,并且与其他实现方案做了比较. 一.背景 随着微软全 ...

最新文章

  1. 如何安装python3.7.4_银河麒麟安装Python3.7.4以及升级自带OpenSSL
  2. CentOS7下搭建Nginx+PHP7的安装配置
  3. 克隆可序列化和不可序列化的Java对象
  4. java 数据结构详解,数组,集合,HashMap
  5. java注解中可使用对象_Java注解(二):实战 - 直接使用对象列表生成报表...
  6. Sql server 2005 中的dense_rank()函数的应用
  7. 交叉验证选择最佳参数_如何为您的公司选择最佳的身份验证即服务提供商
  8. 查看ssis执行日志_SSIS包日志记录概述
  9. 大白话讲高项高频知识点(在线更新)
  10. 中国栓塞线圈市场趋势报告、技术动态创新及市场预测
  11. cf烟雾头怎么调win7系统
  12. HDU1285 确定比赛名次【拓扑排序】
  13. 二叉树前中后序遍历的口诀
  14. codesys 串口通讯实例_CodeSys如何实现串口通信
  15. (方法总结)Python 一行代码提取字符串每个单词首字母的两种方法
  16. selenium、you-get下载B站视频、监控播放量和弹幕
  17. 人事管理系统 v4.1.8(源码)
  18. Ubuntu12.04搭建BigBlueButton
  19. 淘宝运营 促销活动的2种 互动型和大促让利型
  20. SQL 注入漏洞检测与利用

热门文章

  1. 阿里云安装部署Oracle11g 详细教程
  2. 揭秘udesk智能质检:质检+分析双剑合璧
  3. 20190121——不羡神仙 Java设计模式
  4. HUELOJ 1109: 打印数字图形(函数专题)
  5. c语言程序设计植树,C语言程序设计100例之(19):欢乐的跳
  6. 固态硬盘能提高服务器内存吗,内存涨疯了!固态硬盘能替代内存吗?
  7. 【笔记】大明王朝的七张面孔
  8. 小孔成像总结_【初中物理】物理解题技巧+方法总结
  9. 数据的处理方法及触摸屏终端
  10. 服务器2012系统修复,windows2012R2: sfc /scannow,错误:资源保护无法启动修复服务 - Microsoft Community...