Правильный способ - создать слой доступа к БД за шаблоном репозитория:
public interface IRepository<T>
{
IEnumerable<T> GetAll();
T GetById(int id);
void Save(T saveThis);
void Delete(T deleteThis);
}
, а затем реализовать его с типом вашего домена Категория (я предполагаю, что это тип домена, а не сгенерированный типс помощью ORM.
public interface ICategoryRepository : IRepository<Category>
{
// add any methods that are needed to act on this specific repo
}
затем установите зависимость в ViewModel в этот ICategoryRepository;
private readonly ICategoryRepository _categoryRepo;
public ViewModel(ICategoryRepository categoryRepo)
{
_categoryRepo = categoryRepo;
}
Затем действуйте по этой зависимости из вашей ViewModel, ваш ViewModel НЕ ДОЛЖЕН вызывать базу данныхпрямо то, что вы, по-видимому, имеете в виду.
ваш код:
sdb.ExecuteSprocAccessor <Category> ("Get_Categories_List");
должен находиться в GetAll () хранилища. Переместите его из ViewModel.
Ваша настройка наблюдаемой коллекции должна быть сделана в ctr:
ListCategories = categories.ToObservableCollection <Category>();
по этому:
public ViewModel(ICategoryRepository categoryRepo)
{
_categoryRepo = categoryRepo;
var categories = _categoryRepo.GetAll();
ListCategories = categories.ToObservableCollection <Category>();
}