这几天弄 Entity Framework(下面简称 EF),理解各实体间的关系,对于做联合查询,级联增、删、改起到至关的决定性作用。下面是自己对EF的理解。
选用AdventureWorks 数据库中的Sales 下面SalesOrderHeader,SalesOrderDetail,Address间的关系讲解。他们间的关系如图:
下面是自己写的代码,和一些自己的理解。
(一)理解
(1)图中SalesOrderDetail对SalesOrderHeader是多对一的关系,直接用foreach就可以遍历出实体的每行。SalesOrderHeader的导航属性SalesOrderDetail是以 EntityCollection<SalesOrderDetail>形式出现的.
(2)图中Address对SalesOrderHeader是一对多的关系,要查Address相关信息就必须查找Address实体。而查找Address实体我们要通过SalesOrderHeader.BllToAddressID(这个.BllToAddressID是参照Address.AddressID),SalesOrderHeader的导航属性Address是EntityReference<Address>形式出现的。
(3)SalesOrderHeader中出现了Address(BillToAddressID)和Address1(ShopToAddressID),这两都是参照Address实体中的AddressID.就是说如果主表中多次引用同一个从表。那么在主表中的导航属性为Address,Addres1,Address2,Address3....
(二)代码