Использование Catel с шаблоном репозитория, EF6 и моделями просмотра

Я не могу найти документацию по подключению модели представления к репозиторию с помощью Catel.

Я настроил шаблон репозитория и мои модели с кодом EF6 First (все они расширяются из ModelBase), но мне нужно знать, как использовать его с ViewModel.

Нужно ли мне создавать службу для UnitOfWork? И если да, то как? Как я буду использовать это в ViewModel?

В настоящее время я использую репозиторий в качестве модели в моей модели представления, но я не думаю, что это правильный способ сделать это? См. мою CompaniesViewModel ниже:

IUnitOfWork uow;

    public CompaniesViewModel()
    {
        uow = new UnitOfWork<SoftwareSolutionsContext>();

        CompanyRepository = uow.GetRepository<ICompanyRepository>();
    }

    public override string Title { get { return "Companies"; } }

    protected override async Task Close()
    {
        uow.Dispose();

        await base.Close();
    }

    protected override async Task Initialize()
    {
        Companies = new ObservableCollection<Company>(CompanyRepository.GetAll());

        await base.Initialize();
    }

    public ObservableCollection<Company> Companies
    {
        get { return GetValue<ObservableCollection<Company>>(CompaniesProperty); }
        set { SetValue(CompaniesProperty, value); }
    }

    public static readonly PropertyData CompaniesProperty = RegisterProperty("Companies", typeof(ObservableCollection<Company>), null);

    [Model]
    public ICompanyRepository CompanyRepository
    {
        get { return GetValue<ICompanyRepository>(CompanyRepositoryProperty); }
        private set { SetValue(CompanyRepositoryProperty, value); }
    }

    public static readonly PropertyData CompanyRepositoryProperty = RegisterProperty("CompanyRepository", typeof(ICompanyRepository));

По сути, у меня есть 2 сценария работы с данными:

  1. получение всех данных для отображения в сетке данных
  2. выбор записи в сетке данных, чтобы открыть другое представление для редактирования одной записи

Любое руководство будет оценено.


person pjdupreez    schedule 26.05.2015    source источник


Ответы (1)


Это очень сложная тема, потому что здесь в основном есть несколько вариантов:

  1. Создавайте абстракции в сервисах (так что виртуальная машина работает только с сервисами, сервисы — это ваш API в БД). Сервисы работают с UoW
  2. Некоторые люди думают, что 1 слишком сложен. В этом случае вы можете просто использовать UoW внутри вашей виртуальной машины.

У обоих есть свои плюсы и минусы, просто выберите то, во что вы верите больше всего.

person Geert van Horrik    schedule 26.05.2015
comment
хотя в данный момент я использую вариант 2, я хотел бы попробовать вариант 1, если у вас есть пример, который я мог бы отработать. - person pjdupreez; 26.05.2015