外键引用不存在的项目

时间:2018-11-15 10:23:10

标签: c# .net entity-framework ef-code-first

我不确定如何正确命名我的方案(如可见),但这是这种情况:

我有多个表,这些表中有数据,一个应用程序层可以插入,删除和更新数据。 要求是我能够完全记录所有更改。为此,我创建了一个庞大的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:

  • 带有FK的日志表
  • 日志条目必须始终存在,而其相关条目可能会被删除。

1 个答案:

答案 0 :(得分:0)

  1. 创建一个触发器DB,以在插入更新和删除之前将条目添加到日志表中。

  2. 使用用户连接到仅具有对日志表的插入访问权限而不具有删除或更新权限的DB。

  3. 如果您确实想在某个时候进行还原,最好为每个表创建一个日志表。