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,如需转载请自行联系原作者