首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >2个表的性能,从第2个表中获取最新记录

2个表的性能,从第2个表中获取最新记录
EN

Stack Overflow用户
提问于 2012-10-01 16:17:45
回答 2查看 105关注 0票数 0

我使用代码优先,实体,MVC3 +剃刀,我们有很多步骤在他们的表单(这也必须被审计)

我有Forms,它有Steps,所以模型看起来像这样。

代码语言:javascript
复制
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; }
}

然后,当我想要显示一个用户界面时,麻烦就来了,它显示了表单的摘要信息以及最近的步骤,详细说明了提交的许多表单的进度,以及它们所处的步骤和摘要。即使只有几条记录,性能也很差,更不用说我们有数千条记录了。我必须跨表进行查询,如下所示:

我必须从最新的日期获取步骤,而不仅仅是最新的“步骤”编号,因为表单可以返回到前一步骤。

代码语言:javascript
复制
int latestAuditStep = myForm.AuditItems
    .OrderByDescending(ai => ai.DateOfAction)
    .Select(ai => ai.Step)
     .First();

显然,这是相当昂贵的,我正在寻找一种更好的方法来解决这个建模问题。

注意:理想情况下,我会考虑使用WWF,因为这似乎是结合使用的最好工具,但我没有足够的时间来学习这一点,而不是仅仅“完成工作”,所以不知道它是否会有所帮助。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-11-29 17:19:02

仍然不完美,但是

代码语言:javascript
复制
return AuditItems.OrderBy(ai => ai.DateOfAction).Last()

当然缩短了代码。

票数 0
EN

Stack Overflow用户

发布于 2012-10-02 00:05:34

考虑使用数据库视图。

并在FormID和DateOfAction列上创建数据库索引。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12669667

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档