asp.net mvc3实体框架查找

时间:2012-03-29 04:57:30

标签: asp.net asp.net-mvc asp.net-mvc-3 entity-framework

我有一个具有状态表的应用程序,请参阅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。

有人做过类似的事吗?

2 个答案:

答案 0 :(得分:0)

您要找的是Temporal Database。实际上,您不必保留大量的状态代码,而是将逻辑划分为日期管道。例如,作业开始日期,作业完成日期。完成的作业应该在某个时候迁移到存档,以保持数据库清洁。

答案 1 :(得分:0)

你可能有

StatusHistory

  • ID
  • JobID
  • StatusID
  • 日期

当Job包含当前 StatusID 时。

工作

  • ID
  • StatusID(最新)

这样你就可以“缓存”作业的最新状态,而不是搜索..

StatusHistories.OrderDescending(s => s.Date).FirstOrDefault(); //unnecessary task

每次你需要它。