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 
看来应该正确处理基数,但是我可能错过了一些东西。     

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...