数据库关系与EF实体关系

简介:
ADO.NET Entity Framework是对SQL Server 表和表间关系的一个映射的框架,在SQL Server中的表关系,在EF中也转抽象成实体类间的关系。在SQL Server中,表间关系有:一对多,一对一,多对多,在实体中,也同样有这几种关系,并且在EF中,能从数据表关系生成实体间关系。
1、 一对多
下图是数据中表Sub与表Main的关系图,表Sub中的MainID对应表Main中的ID。
 

对应的EF中的实体图为
 

在Main对象中有一个Subs的集合,但对于Sub对象,则有一个Main的属性,但只是一个这样的对象。不管是在数据库还是在EF中,一对多的关系是比较好理解,也没有太多歧义的。
2、 一对一
我们可以把上面的数据表改成一对一,如果不改变表结构的基础上可以给Subs表中的MainID加一个唯一约束,如下:
SQL语句:
alter  table subs
add  constraint AK_SubsMainid
Unique(MainID)
这时,我们打开数据库关系图,会发现,确定表Mains与Subs成了一对一的关系,如下图:
 

此时,我们再从数据库生成实体关系类,如下图:
 

 

结果还是一对多的实体图,Main 对象的Subs属性仍然是个集合,但这个集合往数据理新时,要验证唯一约束。
要使这种一对一的数据表关系映射到实体的一对一,就得改变一下表结构了。
 
现在Mains表中的ID是自动增长,也是该表的主键,而Subs中的ID也是该表的主键,但他是Mains表ID的外键。这时,生成的实体关系图如下:
 

3、 多对多
如果两张表是多对多的关系,就需要再建立第三张表,只是用来存两张表的ID,如下图:
 

生成实体图如下:
 

生成实体关系图后,就后了两个实体了,其中的关系,代表着一张数据库表MainSub。








本文转自桂素伟51CTO博客,原文链接: http://blog.51cto.com/axzxs/552433 ,如需转载请自行联系原作者


相关文章
|
1月前
|
SQL 关系型数据库 MySQL
【MySQL】— —熟练掌握用SQL语句实现数据库和基本表的创建。熟练掌握MySQL的安装、客户端登录方法;熟练掌握MySQL的编码、数据类型等基础知识;掌握实体完整性的定义和维护方法、掌握参照完整性
【MySQL】— —熟练掌握用SQL语句实现数据库和基本表的创建。熟练掌握MySQL的安装、客户端登录方法;熟练掌握MySQL的编码、数据类型等基础知识;掌握实体完整性的定义和维护方法、掌握参照完整性
99 1
|
6月前
|
前端开发 Java 关系型数据库
【Mybatis-Plus】mybatisplus更新时,实体字段为空,数据库不更新的解决方案
【Mybatis-Plus】mybatisplus更新时,实体字段为空,数据库不更新的解决方案
251 0
|
2月前
|
存储 关系型数据库 MySQL
MySQL技能完整学习列表4、数据库设计——2、数据库规范化(Normalization)——3、实体-关系模型(ER Modeling)
MySQL技能完整学习列表4、数据库设计——2、数据库规范化(Normalization)——3、实体-关系模型(ER Modeling)
57 0
|
9月前
|
API 数据库
如何使用WCF框架和EF框架实现对数据库的操作
如何使用WCF框架和EF框架实现对数据库的操作
|
9月前
|
存储 JSON 定位技术
4.Cesium中实体Entity的增删改查及性能优化(超详细)
Cesium 作为一个功能强大的 WebGL 三维地球仪库,内置了丰富的三维地图展示能力。在 Cesium 中,我们可以通过 Entity(实体)在三维场景中添加和控制各种三维对象,如点、线、面、模型等。本文将介绍 Cesium 中实体的增删改查操作。
1573 0
|
10月前
|
存储 NoSQL 数据库
数据库的图形联系不清除? 实体-联系模型--E-R图
数据库的图形联系不知道? 实体-联系模型--E-R图
89 0
|
缓存 关系型数据库 MySQL
C#-EF Core使用MySQL数据库
Entity Framework Core (EF Core)是微软推荐的基于.NET Core 的应用程序数据访问技术。开源,轻量级,可扩展并且支持跨平台开发。EF Core是一种对象关系映射器(ORM),通过应用程序实体对象和关系数据库中的数据的映射,使得开发人员能够以面向对象的方式处理数据。
483 0
|
数据建模 关系型数据库 MySQL
数据库原理及MySQL应用 | 实体联系模型
ER模型是数据库设计中被广泛用作数据建模的工具,通常用在“自顶向下”的设计方法中,是数据库应用的第一步。
164 2
数据库原理及MySQL应用 | 实体联系模型
|
Java 关系型数据库 MySQL
Mybatis数据库连接报错:对实体 “characterEncoding“ 的引用必须以 ‘;‘ 分隔符结尾
Mybatis数据库连接报错:对实体 “characterEncoding“ 的引用必须以 ‘;‘ 分隔符结尾
123 0
|
Java 数据库连接 数据库
hibernate查询出的实体,set值后,自动更新到数据库
hibernate查询出的实体,set值后,自动更新到数据库
420 2
hibernate查询出的实体,set值后,自动更新到数据库