我目前正在编写我的第一个 MVVM 应用程序,它使用 EntityFramework 进行数据访问。应用程序严重依赖底层数据库,并且在许多情况下必须将新数据添加到数据库中。
但是,我不确定在 ViewModel 中调用 ObjectContext 是否是个好主意。例如
public class SomeViewModel : ViewModelBase
{
public IEnumerable<User> AllUsers { get; private set; }
private void SomeMethod()
{
var __entities = new DatabaseEntities();
AllUsers = __entities.Users.Where(...).ToList();
}
}
我见过这样的解决方案,但随之而来的是一些问题。例如 ObjectContext 实际存在多长时间,或者是否应该更喜欢单个全局可访问的 ObjectContext。
还是应该首先不应该像那些调用那样成为 VM 的一部分?目前我还可以想象为每个 DB 表实现像 StaticHelpers 一样的方法,并使用像 GetAllUsers() 这样的方法。
在 Josh Smith 关于 MVVM 的示例应用程序中,他使用了一个注入到每个 VM 的构造函数中的存储库。
public AllCustomersViewModel(CustomerRepository customerRepository)
尽管这必须是一个常见问题,但对于较小的应用程序如何解决此问题(最佳实践),我没有找到令人满意的答案?