我有一个基于MVC的站点,它使用存储库/服务模式进行数据访问.编写的服务用于大多数应用程序(控制台,winform和Web).目前,控制器直接与服务通信.这限制了应用适当缓存的能力.
我看到我的选项如下:
我可以看到每个人的利弊.使用Repository/Service进行缓存的最佳做法是什么?
我正在使用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".
我可以看到为什么会这样,但我无法弄清楚如何使这项工作.有什么建议?