我正在使用 Code First、Entities、MVC3 + Razor,我们的表单中有很多步骤(也必须经过审核)
我有Forms
,其中有Steps
,所以模型看起来像这样。
public class MyForm
{
public int FormId { get; set; }
public Guid UniqueReferenceId { get; set; }
public DateTime DateCreatedOn { get; set; }
public string Name { get; set; }
public string DetailsOfContact { get; set; }
public virtual ICollection<AuditItem> AuditItems { get; set; }
}
public class AuditItem
{
public int AuditItemId { get; set; }
public int FormId { get; set; }
public string ActionByUserUid { get; set; }
public DateTime DateOfAction { get; set; }
public int Step { get; set; }
public virtual MyForm MyForm { get; set; }
}
当我想显示一个用户界面时,麻烦就来了,该界面显示表单中的摘要信息以及它所处的最新步骤,详细说明提交的许多表单的进度,它们所在步骤的表格和摘要。即使只有几张唱片,性能也很差,更不用说当我们有数千张唱片了。我必须通过以下方式查询表:
我必须从最新日期获取步骤,而不仅仅是最新的“步骤”编号,因为表单有可能返回到上一步。
int latestAuditStep = myForm.AuditItems
.OrderByDescending(ai => ai.DateOfAction)
.Select(ai => ai.Step)
.First();
显然这是相当昂贵的,我正在寻找一种更好的方法来解决这个建模问题。
注意:理想情况下,我希望使用 WWF,因为这似乎是结合使用的最佳工具,但我没有足够的时间来学习这一点,而不仅仅是“完成工作”,所以不知道它是否有帮助。