2011-09-07 153 views
0

我们在处理循环依赖时遇到问题,并想知道是否有人可以提出解决方案。如果我们想删除一个客户端,实体框架拒绝这样做,因为它告诉我们外键约束失败。我们的表是建立这样的:避免循环依赖:MySQL/Entity Framework

ClientAccounts

Id [PK] 
Forenames 
Surname 
DefaultEmailId [FK, NULLABLE] 

ClientEmailAddresses

Id [PK] 
Description 
EmailAddress 
ClientId [FK, NON-NULLABLE] 

所以一个客户可以有自己的帐户关联零个或多个电子邮件地址。其中一个将是他们的默认联系电子邮件地址。

我认识到,如果我们允许ClientEmailAddresses表有一个空的ClientId,它会工作正常;但我们不希望出现孤儿电子邮件记录的情况。

回答

1

也许最好在表ClientEmailAddresses中存储字段'default',并从表ClientAccounts中删除DefaultEmailId。我不知道你的代码结构,但有时像你的结构是多余的。

+0

我们喜欢这个解决方案,因为它会打破循环问题,但担心的是我们可以有多个默认值。 – pierre

+0

是的,在这种情况下,您的逻辑将更加复杂。您应该首先重置先前的默认状态并设置一个新的状态。 –

0

您不应该先删除ClientEmailAddresses中的条目吗?

想象这样的存储过程:

## delete Client 
delete from ClientEmailAddresses where ClientId = ID2delete 
delete from ClientAccounts where Id = ID2delete 

其中Id2delete是客户端ID来删除。

我还没有尝试,但应该工作!