我找不到任何关于使用Catel将视图模型连接到存储库的文档。
我已经使用EF6 Code First(所有扩展自ModelBase)设置了存储库模式和我的模型,但需要知道如何将它与ViewModel一起使用。
我是否需要为UnitOfWork创建服务?如果是这样,怎么样?我将如何在ViewModel中使用它?
我目前在我的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));
基本上,我有两种处理数据的方案:
任何指导都将不胜感激。
答案 0 :(得分:1)
这是一个非常困难的主题,因为这里基本上有几个选项:
两者都有其优点和缺点,只需选择你最相信的东西。