使用LinqToSQL的MVVM

时间:2010-09-28 18:14:59

标签: c# wpf linq-to-sql mvvm command

有一点BrainF ***让我理解与LinqToSQL相关的MVVM。

MVVM的构建如下:

查看 - > Viewmodel - >模型

查看:xaml和cs代码隐藏文件。对 ?

Viewmodel:由Developer(* .cs)创建,我的模型的封装属性

型号:Datamodel

所以这是问题:

LinqToSql给了我一个dbml文件,其中包含我数据库中的所有数据,所以我可以使用它作为模型吗?

我必须在何处以及如何在此架构中实现命令?

从数据库获取数据并填充视图模型或模型的方法在哪里? :-) 喜欢getCustomer()

2 个答案:

答案 0 :(得分:12)

你在这里问了很多问题,但让我们一次解决一个问题:

  

查看:xaml和cs代码背后   文件。对吗?

是。或者,通常,所有仅关注呈现数据的逻辑。示例:

  • 根据事物列表,由View层决定它们是否会显示在下拉框或项目符号列表中。
  • 由View决定是否将管理员名称变为蓝色。但是决定员工是否是经理。
  

LinqToSql给了我一个dbml文件   其中包含我的所有数据   数据库,我可以用它作为   型号?

是的,你可以。在DBML文件下创建的LINQ-to-SQL类为您提供了根据数据库模式构建的对象模型。您可以扩展这些对象(使用部分类,或者通过构建由它们组成的其他类)来添加验证和其他业务逻辑。 Scott Guthrie gives us the low-down.

这些是您的ViewModel通常会封装的类,添加和公开与显示数据的视图相关的属性。

  

我必须在何处以及如何实施   这个架构中的命令?

Commands是一种松散耦合的用户界面和事件处理逻辑之间的通信方式。因此,您的ViewModel会将命令公开给视图。您可以指定给定控件(如Button.Click)上的给定事件应发出的命令,相关的ViewModel将处理其余事件。

  

从哪里获取数据的方法   数据库并填充viewmodel或   模特? :-) like getCustomer()

这就是Repository模式的用途。简而言之:构建一个Repository类,它使用DBML文件中指定的DataContext将LINQ查询提交给数据库并返回Model对象。您的ViewModel可以使用Repository类的实例来检索它们将呈现给您的视图的模型。

请注意我只概述了一些基础知识,这肯定不是使用您提到的广泛模式的唯一方法。 Josh Smith已就这些概念撰写了大量精彩资料。 WPF Apps With The Model-View-ViewModel Design Pattern将是一个很好的起点!

答案 1 :(得分:1)

基本上你的存储库充当你的数据源,这就是你编写方法的地方:

public class CustomerRepository{
    private MyDataContext db = new MyDataContext();
    public Customer Find(id)
    {
      //Linq queries or Lambdas
    }

    public Customer Add(Customer _custoemr){}

    public void save(){}

    public IEnumerable<Customer> FindAll(){}
}

this question中,您可以找到一些有用的链接,可以帮助您了解存储库模式。