数据库关系与EF实体关系

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

数据库关系与EF实体关系

对应的EF中的实体图为
 

数据库关系与EF实体关系

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

数据库关系与EF实体关系

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

 

数据库关系与EF实体关系

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

数据库关系与EF实体关系

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

数据库关系与EF实体关系

生成实体图如下:
 

数据库关系与EF实体关系

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








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


上一篇:MySQL 物理结构


下一篇:区块链开发(六)truffle使用入门和testrpc安装