【发布时间】:2011-12-29 04:57:25
【问题描述】:
我正在使用 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 查询?
- 存储库不仅可以生成模型类,还可以生成“子”聚合类吗?什么是合适的术语?
- 假设上面的步骤没问题,我应该使用导航属性来填充这个额外的类吗?
【问题讨论】:
-
This answer 让我觉得我应该离开存储库 IQueryable,然后缓存服务层。想法?
标签: linq azure repository repository-pattern odata