【发布时间】:2012-08-31 07:03:16
【问题描述】:
我需要使用代码优先方法跟踪 MVC .NET 应用程序中某些数据库对象的更改历史记录。
历史表的含义如下: http://database-programmer.blogspot.de/2008/07/history-tables.html
如果我自己编写 SQL 查询,我会使用历史表。但在代码优先的方法中,会生成 SQL……我想坚持这种范式。
目标是一个结构,其中包含更改/删除条目的所有“旧”修订以及一些附加信息(例如时间戳、更改它的用户......)
有什么想法吗?
问候, 斯蒂芬
更具体地说 - 这是一些代码示例:
public class Node {
public int NodeID { get; set; }
public string? data { get; set; } // sample data
}
public class NodeHistory {
public int NodeID { get; set; }
public string? data { get; set; }
public int UserID { get; set; }
public DataTime timestamp { get; set; }
}
我需要一些“框架”帮助,以便能够在更改持久化时向 NodeHistory 添加条目以表节点结构。
这意味着:仅仅覆盖 set-method 不是一个解决方案,因为它也会创建一个条目,如果对“节点”的更改没有在最后保持(例如角色回退)。
【问题讨论】:
-
不要觉得自己被生成的 SQL 卡住了。修改数据层以满足您的需求并没有什么坏处,尤其是当业务层中没有表示时。
-
我添加了一些代码,它解释了问题所在。
标签: c# asp.net-mvc database ef-code-first