引用不存在项目的外键

Foreign Keys refering to non-existing items

我不确定如何恰当地为我的场景命名,使其可见,但情况是这样的:

我有多个表,里面有数据,还有一个应用层,可以插入、删除和更新数据。 一个要求是我能够完全记录所有更改。为此,我创建了一个巨大的 Log class,其中包含所有需要记录的 classes。

问题是:永远不允许删除日志条目,因此,如果需要,我可以重新创建已删除的任何内容(需要识别给定已删除类型的所有日志条目)。

示例代码:

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; } }
}

长话短说:

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

  2. 使用用户连接到数据库,该数据库只能插入日志 table 而不能删除或更新。

  3. 如果您真的想在某个时间恢复,最好为每个 table 创建一个日志 table。