我是新手。我已经能够在存在一对多关系的地方添加新实体。我遇到了一个问题(不知道该怎么做)当关系使用多对多时添加一个新的实体。
在我的EDM中,我有:
单位
<Scalar Properties>
一个。 Org_ID(身份字段)
湾ORGNAME
C。 OrgDesc
<Navigation Properties>
Building_orgs_Relation
建筑物
<Scalar Properties>
a)Building_ID(身份字段)
b)Building_Desc
<Navigation Properties>
Building_orgs_Relation
Org_Building_Relation
a)Building_org_ID(身份字段)
b)Org_ID
c)Building_ID
<Navigation Properties>
大厦
组织
我想:
有些人可以提供一个如何使用上述EDM进行操作的样本吗? VB代码将不胜感激。
答案 0 :(得分:1)
目前,实体框架在它可以处理的多对多关系方面确实受到限制。 Visual Studio设计器唯一能识别的是一个只包含两列的表,这两列都是其他两个表的外键,主键是两个外键上的复合键。
因此,如果您可以控制数据库模式,那么您可以做的一件事是更改Org_Building_Relation表以删除Building_org_ID列,并使主键成为Org_ID和Building_ID上的复合键。如果您这样做,那么当您映射表时,实体框架会将其识别为多对多关系。
如果您不能这样做(例如,您无法控制数据库架构),那么您需要确保在EDMX中映射的唯一字段是与其他字段相关的字段表,并且您没有映射主键。这很困难,因为每次更新时映射向导都会丢弃并重新创建存储映射。
另一种选择是不在实体框架中使用“适当的”多对多映射,而只是将关系视为另一个实体而不是将其包含在关系中。
我不记得在即将推出的.NET 4.0中是否有所改进。