我正在使用Azure AppFabric进行全新存储库的缓存。我的存储库看起来像这样:
public interface IMyRepository
{
public IEnumerable<K> Select(IQueryable<T> someQuery)
public IEnumerable<T> SelectAllStudents() // should I replace T with Children in my repository?
}
我的目的是公开和缓存来自客户端的OData请求,因此IQueryable。我还需要经常返回看起来像这样的数据
public class Children
{
public string Name {get;set;}
public int CountOfToys {get;set;}
public List<Toys> {get;set;}
}
然而,我的数据库是儿童玩具的1..many
。
当前的ASP.NET应用程序直接在aspx页面中使用EF的导航属性来填充上面的ViewModel,但是我不知道最有效的路由将此功能移植到存储库。
由于AppFabric缓存,我对IEnumerable结果的约束是:
- 如何实现IMyRepository以支持缓存OData查询?
- 存储库不仅可以发出模型类,还可以发出“子”聚合类吗?什么是适当的术语?
- 假设上面的步骤是正确的,我应该使用导航属性来填充这个额外的类吗?
醇>
答案 0 :(得分:0)
缓存存储库实体将更容易控制,这意味着您的系统中有一个内存数据库,但性能和灵活性较低。缓存域对象可以提供更高的性能,因为它更接近您实际要缓存的内容。但您需要考虑缓存项之间的同步。我想通过引入一个单独的缓存管理器组件来缓存服务层。