我有一个具有状态表的应用程序,请参阅Database best practices - Status以获取示例
我希望能够显示状态变化的历史记录。我有两种方法可以看到使用mvc3和像这样的实体模型实现它 - http://www.asp.net/mvc/tutorials/getting-started-with-ef-using-mvc/creating-an-entity-framework-data-model-for-an-asp-net-mvc-application
我总是可以在任何需要链接到状态表的对象上拥有一个StatusID属性,例如。
作业
ID
名称
StatusID
状态
ID
状态
或者,我可以拥有一个StatusHistory表,并使StatusID属性成为一个返回Status对象的函数,例如。
作业
ID
名称
状态
ID
状态
StatusHistory
ID
作业ID
StatusID
日期
并在Job模型类(Job.cs)上有一个名为Status的函数,它通过查询StatusHistory表以获取与该Job相关的最新状态对象来返回1个Status Object。
有人做过类似的事吗?
答案 0 :(得分:0)
您要找的是Temporal Database。实际上,您不必保留大量的状态代码,而是将逻辑划分为日期管道。例如,作业开始日期,作业完成日期。完成的作业应该在某个时候迁移到存档,以保持数据库清洁。
答案 1 :(得分:0)
你可能有
StatusHistory
当Job包含当前 StatusID 时。
工作
这样你就可以“缓存”作业的最新状态,而不是搜索..
StatusHistories.OrderDescending(s => s.Date).FirstOrDefault(); //unnecessary task
每次你需要它。