Я использую 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 использует свойства навигации EF непосредственно на странице aspx для заполнения ViewModel выше, однако я не знаю наиболее эффективного маршрута для переноса этой функции в репозиторий.
Из-за кэширования AppFabric мои ограничения для результатов IEnumerable:
- Возвращаемый объект не должен быть типом значения
- Возвращаемый объект должен быть сериализуемым
- Как реализовать IMyRepository для поддержки кэширования запросов OData?
- Можно ли репозиторию создавать не только классы моделей, но и «дочерний» агрегатный класс? Какой правильный термин для этого?
- Предполагая, что описанный выше шаг выполнен правильно, должен ли я использовать свойства навигации для заполнения этого дополнительного класса?