MVC3 проверяет ссылки на запись модели перед удалением - PullRequest
0 голосов
/ 23 января 2012

Каков наилучший метод проверки наличия каких-либо ссылок на конкретную запись модели перед удалением этой записи? По сути, у меня есть модель, которая представляет изображения и все метаданные, связанные с изображением. Другие модели будут иметь ссылки на одно или несколько изображений (в зависимости от модели).

Скажем, например, у меня есть "Item", который имеет "MainImage" и "AltImage", оба из которых являются просто ссылками на модель изображения. Если я удаляю запись элемента, я должен проверить, есть ли ссылки на эти два изображения каким-либо другим элементом или любой другой таблицей, и если нет, то удалить изображение.
Как бы я пошел по этому поводу?

Ответы [ 2 ]

0 голосов
/ 23 января 2012

Пара идей, основанных на том, что вы предпочитаете:

Создать триггер в вашей БД

Это удалит alt img. и каждый раз, когда вы хотите удалить основную строку записи, будет удаляться и другая запись.

Другой (на основе nhibernate)

Убедитесь, что альтернативное изображение в вашей сущности может иметь возможность каскадных команд. И в этом случае, если вы удалите одно изображение, будет удалено и другое. Вот один пример из Google, как это сделать

Самый неуклюжий, но самый простой:

Удалить обе записи при удалении изображения.

0 голосов
/ 23 января 2012

Поскольку вы используете базу данных, пусть она поддерживает ссылочную целостность, используя ограничения внешнего ключа для изображений.База данных или EF не позволит вам удалить изображение, если на него все еще есть ссылки.Вы можете перехватить это исключение и продолжить обработку запроса, не удаляя изображение.

Я нашел сообщение в блоге Определение ограничений внешнего ключа в EF , которое может быть полезно при их настройке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...