我有一个表,该表维护其他表的更改历史记录。目前,它已使用触发器进行了更新,但我正在尝试将其移入实体框架。问题在于历史记录表需要知道哪个实体发生了更改。
我有这些实体。
public class History
{
[Key]
public int HistoryID { get; set; }
public int SourceID { get; set; }
public string SourceType { get; set; }
}
public class Person
{
[Key]
public int PersonID { get; set; }
public int HistoryID { get; set; }
public virtual History History { get; set; }
}
当Person发生更改时,History表将存储有关更改的信息。 sourceID列将为PersonID,而源类型将指示其为Person表。可能会有多个表可能发生更改,因此SourceID并不总是PersonID。
PersonID是一个身份列。保存时,我不知道如何设置SourceID = PersonID。保存完成之前,不会设置personID。我可以保存“人员”,然后将其插入历史记录中,以将其包装在事务中。
是否有实体框架可以解决这个问题?