Вопрос

У меня есть несколько классов мастер-подробностей, основанные в большой части на Josh Smith's Статья MSDNЕго отличный код, особенно на примере, но оставляет мне интересно, как лучше всего справляться с ситуациями, где вы хотите некоторое подмножество репозитория.

Так что josh имеет класс под названием allcustomersviewmodel, а код что-то вроде:

    public AllCustomersViewModel(CustomerRepository customerRepository)
    {
        if (customerRepository == null) throw new ArgumentNullException("customerRepository");

        // Populate the AllCustomers collection with CustomerViewModels.
         _allCustomers = _customerRepository
            .GetCustomers()
            .Select(cust => new CustomerViewModel(cust, _customerRepository))
            .ToList();
   }
.

Как вы решаете ситуацию, когда вы хотите предпочтенияCustomers, excustomers, localcustomers и т. Д., etc ??

Его код предлагает мне класс ViewModel для каждого, с фильтрацией хранилища жесткокодирования в этом классе.

Или другой способ пройти дополнительный фильтр в просмотру наряду с репозиторием?

Как ваш код решит эту особую проблему?

Кроме того, у кого-нибудь есть ссылки или хорошие примеры, показывающие, как использовать SpeciAFicatePattern или iQueryable, чтобы решить такие проблемы?

ура,

Беррил

Это было полезно?

Решение

Один вариант (и, возможно, самый чистый) - просто добавить эти методы в CustomerRepository - E.g.Генеракодицетагкод, генеракодицетагкод и т. Д.

Также вы действительно должны работать от абстракций, поэтому должен пройти генеракодицетагкод к конструктору модели вашего представления.Это определяет код вашего представления о моделей модели от вашего репозитория бетона (в этом случае, который читает из файла XML), и позволяет легко поменять реализации, например,для тестирования подразделения.

Другой вариант, как вы упоминаете, для вашего репозитория выставляют GetPreferredCustomers().Если вы рады быть привязаны к IQUERYable, и уверены, что любая реализация доступа к данным будет поддерживать поставщик LINQ, то это обеспечивает хорошую гибкость.Смотрите Здесь для получения дополнительной информации.

Лично я предпочитаю первый вариант, особенно для большего количества приложений на масштабе.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top