小编Lap*_*ven的帖子

使用存储库/服务模式和MVC时缓存数据对象

我有一个基于MVC的站点,它使用存储库/服务模式进行数据访问.编写的服务用于大多数应用程序(控制台,winform和Web).目前,控制器直接与服务通信.这限制了应用适当缓存的能力.

我看到我的选项如下:

  • 为Web应用程序编写一个包装器,它实现了执行缓存的IWhatEverService.
  • 通过缓存每个Action的ViewData,在每个控制器中应用缓存.
  • 不要担心数据缓存,只需为每个Action实现OutputCaching.

我可以看到每个人的利弊.使用Repository/Service进行缓存的最佳做法是什么?

asp.net-mvc caching design-patterns

41
推荐指数
3
解决办法
2万
查看次数

从RavenDB订购结果

我正在使用RavenDB并在尝试订购结果时遇到问题.

这是一个类的示例.

public class Post {
    public int Id {get;get;}
    public DateTimeOffset Posted {get;set;}
    public List<SectionAssignment> Sections{get;set;}
    public string Headline {get;set;}
}
public class SectionAssignment {
    public int SectionId {get;set;}
    public int Priority {get;set;}
}
Run Code Online (Sandbox Code Playgroud)

在我的控制器中,我试图返回一组分配给特定部分的帖子,然后按(desc)命令发布属性的日期部分.然后我想按SectionAssignment Priority排序.这是我得到的:

var posts= RavenSession.Query<Post>()
    .Where(s => s.Sections.Any(sec=>sec.SectionId==5))
    .OrderByDescending(s => s.Posted.Date)
    .ThenBy(s => s.Section.Where(sec => sec.Id == 5).Select(sc => sc.Priority).Single())
    .Take(10)
    .ToList();
Run Code Online (Sandbox Code Playgroud)

我是以下例外:

无法将类型为"System.Linq.Expressions.MethodCallExpressionN"的对象强制转换为"System.Linq.Expressions.MemberExpression".

我可以看到为什么会这样,但我无法弄清楚如何使这项工作.有什么建议?

linq ravendb

3
推荐指数
1
解决办法
487
查看次数

标签 统计

asp.net-mvc ×1

caching ×1

design-patterns ×1

linq ×1

ravendb ×1