Иностранные ключи, ссылающиеся на несуществующие предметы - PullRequest
0 голосов
/ 15 ноября 2018

Я не уверен, как правильно назвать мой сценарий как видимый, но вот ситуация:

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

Дело в том, что записи журнала никогда не могут быть удалены, поэтому при необходимости я могу воссоздать все, что было удалено (требуется идентифицировать все записи журнала для данного удаленного типа).

Пример кода:

public class Tag
{
    public int Id { get; set; }
    public string Name { get; set; }
}
public class Log
{
    [Key]
    public int Id { get; set; } }

    [ForeignKey(nameof(TagFK))]
    public Tag Tag { get; set; } }
    public int? TagFK { get; set; } }
}

TL; DR:

  • Журнальный стол с ФК
  • Записи журнала должны всегда существовать, в то время как связанная с ними запись может быть удалена.

1 Ответ

0 голосов
/ 15 ноября 2018
  1. Создать триггер БД для добавления записи в таблицу журнала перед вставкой обновления и удаления.

  2. Используйте пользователя для подключения к БД, которая имеет только доступ для вставки в таблицу журнала, но не удаляет и не обновляет.

  3. Лучше создать таблицу журналов для каждой таблицы, если вы действительно хотите восстановить в какое-то время.

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