Избегайте циклической зависимости: MySQL / Entity Framework - PullRequest
0 голосов
/ 07 сентября 2011

У нас возникают проблемы с круговой зависимостью, и мы думаем, что кто-нибудь может предложить решение.Если мы хотим удалить клиента, структура сущностей отказывается это делать, поскольку сообщает, что ограничение внешнего ключа не выполняется.Наши таблицы настроены так:

ClientAccounts

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

ClientEmailAddresses

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

Итак, Клиент может иметь ноль или много адресов электронной почты , связанных с его учетной записью.Одним из которых будет их контактный адрес электронной почты по умолчанию.

Я понимаю, что, если бы мы позволили таблице ClientEmailAddresses иметь нулевой ClientId, это работало бы нормально;но мы не хотим ситуации, когда у нас могли бы быть бесхозные записи электронной почты.

Ответы [ 2 ]

1 голос
/ 07 сентября 2011

Может быть, лучше сохранить поле 'default' в таблице ClientEmailAddresses и удалить DefaultEmailId из таблицы ClientAccounts.Я не знаю вашу структуру кода, но иногда такая структура, как ваша, избыточна.

0 голосов
/ 07 сентября 2011

Не следует ли сначала удалить записи в ClientEmailAddresses ?

Представьте себе хранимую процедуру, подобную этой:

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

где Id2delete - идентификатор клиента для удаления.

Я не пробовал, но должно работать!

...