私はMVVMと一緒にEF4.1を学習しています。これらのチュートリアルの1つでは、別のビューモデル(EmployeeListViewModel)を呼び出す際に使用するリポジトリオブジェクトを持つMainWindowViewModelを作成します。ここでは、コードは次のようになります。リポジトリを定義する場所はどこですか?
public MainWindowViewModel()
{
IObjectContextAdapter adapter = ((IObjectContextAdapter)new SidekickEntities());
_vmRepository = new GenericRepository(adapter.ObjectContext);
EmployeeListViewModel viewModel = new EmployeeListViewModel(_vmRepository);
this.ViewModels.Add(viewModel);
}
public EmployeeListViewModel(GenericRepository repository)
{
if (repository == null)
{
throw new ArgumentNullException("repository");
}
_employeeRepository = repository;
this.AllEmployees = new ObservableCollection<Employee>(_employeeRepository.GetAll<Employee>());
}
私は、なぜリポジトリがMainWindowViewModelに作成され、その後、EmployeeListViewModelに渡される疑問に思って?私はEFにかなり新しいですが、それぞれ別々のViewModelにリポジトリを作成するために少しクリーナー思わ
public MainWindowViewModel()
{
EmployeeListViewModel viewModel = new EmployeeListViewModel();
this.ViewModels.Add(viewModel);
}
public EmployeeListViewModel()
{
IObjectContextAdapter adapter = ((IObjectContextAdapter)new SidekickEntities());
_employeeRepository = new GenericRepository(adapter.ObjectContext);
this.AllEmployees = new ObservableCollection<Employee>(_employeeRepository.GetAll<Employee>());
}
:なぜ、ちょうどこのようEmployeeListViewModelでリポジトリを作成しません。問題のViewModelが、MainWindowViewModelが終了するまでそれを保持するのではなく、もはや使用されなくなったときに、リポジトリをクリーンアップしないでください。
よろしくお願いいたします。私が開発に行き過ぎる前にそれを知ってうれしい! :) – BrianKE