引用不存在项目的外键
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; } }
}
长话短说:
- 使用 FK
记录 Table
- 日志条目需要始终存在,而相关条目可能会被删除。
在插入更新和删除之前创建一个触发器数据库以将条目添加到日志 table 中。
使用用户连接到数据库,该数据库只能插入日志 table 而不能删除或更新。
如果您真的想在某个时间恢复,最好为每个 table 创建一个日志 table。
我不确定如何恰当地为我的场景命名,使其可见,但情况是这样的:
我有多个表,里面有数据,还有一个应用层,可以插入、删除和更新数据。
一个要求是我能够完全记录所有更改。为此,我创建了一个巨大的 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; } }
}
长话短说:
- 使用 FK 记录 Table
- 日志条目需要始终存在,而相关条目可能会被删除。
在插入更新和删除之前创建一个触发器数据库以将条目添加到日志 table 中。
使用用户连接到数据库,该数据库只能插入日志 table 而不能删除或更新。
如果您真的想在某个时间恢复,最好为每个 table 创建一个日志 table。