WPF - 在MVVM的3层架构设计中将DAL放在何处?

Rac*_*hel 6 wpf data-access-layer mvvm n-tier-architecture

我对整个n层体系结构都很陌生,我对使用MVVM和3层应用程序有一些疑问.

根据我的理解,我们有:

  • 视图或UI层,即xaml文件
  • Model,它是一个自定义类,包含"模拟"数据对象的属性和方法
  • ViewModel,它是View和Model之间的"适配器"
  • 一个WCF服务器,它应该处理数据库访问等
  • 用于存储数据的SQL数据库

我的问题是,如何使用数据访问层将所有这些组合在一起?使用MVVM,我会让模型包含自己加载/更新的方法.相反,这应该是在WCF服务器上发生的事情?如果是这样,是否应将对服务器的引用存储在Model或ViewModel中?它应该怎么称呼?

STO*_*STO 9

严格来说,DAL不是MVVM模式的一部分.DAL是某种"幕后"模型,视图和视图模型应该对DAL一无所知.

例如,将实体公开为模型的属性,这些属性在首次访问时加载.

public class ProductListModel
{
    public List<Product> AllProducts 
    {
       get
       { 
          if (_AllProducts == null)
              _AllProducts = MyServiceProxy.LoadAllProducts(...)  
          return _AllProducts;
       }
    }

    public void SaveChanges()
    {
         if (_AllProducts != null)
           MyServiceProxy.SaveProducts(AllProducts);
    }
} 
Run Code Online (Sandbox Code Playgroud)