2009-02-11 4 views
0

модель данных:зависимости Resolve на модели данных без каскадного удаления

tTemplate (TemplateId INT PK)
tPage (PageId INT PK, TemplateId INT FK)
tEmailMessage (EmailMessageId INT PK, TemplateId INT FK)

Требования:

Удаление шаблона допускается только в том случае, если на нем нет зависимостей.

TemplateService отвечает за удаление шаблонов:.

новый TemplateService() Удалить (MyTemplate);

Модули страницы и электронной почты зависят от модуля Template, который, в свою очередь, счастливо не знает об этих зависимостях. В некоторых настройках модуль Page или Email не будет присутствовать. Как я могу решить зависимость от базовой модели данных? Как заставить TemplateService запустить запрос, чтобы узнать, нормально ли удалять элемент?

Я провел некоторое исследование событий EventBrokers и Message Queues, но не смог понять, как они могут мне помочь. Я также не вижу, как это может решить использование модели событий .net.

Я действительно не ищу способ обеспечения целостности данных, а способ предоставления межсервисной связи без возникновения нежелательных зависимостей службы. У меня может быть реализация PageService, где удаление шаблона будет в порядке, и где зависимость будет разрешена, установив tPage.TemplateId равным null. В других реализациях я могу создать каскадное удаление.

ответ

1

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

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

.........................................................................................

+0

Я действительно не ищу способ обеспечения целостности данных, а способ обеспечения межсервисной связи без возникновения нежелательных зависимостей службы. Я редактировал свое оригинальное сообщение. – Marcus