微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

EF4中具有“共享”列的多对多关系

如何解决EF4中具有“共享”列的多对多关系

|| 免责声明:严格来说,我这里的关系不是多对多的,但是考虑到它使用的是关联表,我认为最好稍微降低精度以更好地了解我在做什么。 我的数据库中有以下三个表的等效项:
Customer
---------
CustomerID PK
...

CustomerAddress
---------
CustomerID PK,FK -> Customer
AddressNo  PK
... address columns ...

CustomerPrimaryAddress
--------------
CustomerID PK,FK -> Customer
AddressNo      FK -> CustomerAddress (with CustomerID,so CustomerID 
                                      participates in both relationships)
如果不是很明显,这里的目的是允许每个客户使用多个地址,同时将每个客户最多一个地址指定为“主要”地址。我正在使用关联表来避免将可为空的
PrimaryAddressNumber
列放在
Customer
上,然后创建从
Customer
CustomerAddress
的外键。 这一切都很好,但是EF然后将
CustomerPrimaryAddress
实体放置在我的模型中。由于其唯一的目的是用作关联表,因此我无需在代码中表示该表。我从概念模型中删除
CustomerPrimaryAddress
表,然后在
Customer
CustomerAddress
之间创建了关联,如下所示:
Table          Customer   CustomerAddress
Multiplicity   1          0..1
然后,我映射了该关联以使用存储模型中的“ 5”表,并且所有列的映射都很好,所以我想。 我的问题是,现在EF抱怨
CustomerPrimaryAddress
中的
CustomerID
被映射到我的关联中的两个位置,因为它同时映射到
Customer
CustomerAddress
。 有没有办法解决?我不希望在
Customer
添加一个可为空的列来表示主地址号,因为从DBA的角度来看,这不仅不是一个令人愉快的选择,而且EF还将抱怨具有周期性关系,并且我不得不中断插入在代码中。     

解决方法

在这里大声思考:
Customer
---------
CustomerID PK
...

CustomerAddress
---------
AddressNo  PK
CustomerID FK -> Customer,non-nullable
... address columns ...

CustomerPrimaryAddress
--------------
CustomerID PK,FK -> Customer
AddressNo      FK -> CustomerAddress 
看来应该正确处理基数,但是我可能错过了一些东西。     

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。