2010-09-28 79 views
2

有一个小小的BrainF ***问题让我理解MVVM与LinqToSQL的关系。MVVM与LinqToSQL

的MVVM是建立这样的:

查看 - >视图模型 - >模型

观点:XAML和隐藏文件的CS代码。对 ?

视图模型:由开发商(*的.cs)创建的,我的型号的封装特性

型号:数据模型

因此,这里的问题:

的LinqToSql给了我一个DBML文件,该文件包含来自我的数据库的所有数据,那么我可以使用它作为模型?

我在哪里以及如何在此架构中实现命令?

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

回答

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你可以找到一些有用的链接,可以帮助您了解存储库模式。

12

你问一堆问题在这里,但让我们来解决他们一次一个:

观点:XAML和背后 文件CS代码。对 ?

是的。或者,一般而言,仅涉及呈现数据的所有逻辑。示例:

  • 给出一个事情列表,视图层决定它们是否显示在下拉框或项目符号列表中。
  • 由视图决定是否管理员的员工将他们的姓名用蓝色表示。但直到决定员工是否为经理的视角为而非

的LinqToSql给了我一个DBML文件 其中包含从我 数据库的所有数据,这样我就可以用这个作为 模型?

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

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

我在哪里以及如何在此架构中实现 命令?

Commands是在用户界面和事件处理逻辑之间进行通信的松散耦合方式。所以你的ViewModels会将命令公开给视图。您可以指定给定控件上的某个给定事件(如Button.Click)应该发出的命令,并且关联的ViewModel处理其余事件。

哪里摆脱 数据的数据库,并填补了视图模型或 模型的方法呢? :-) like getCustomer()

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

请注意我只列出了一些基础知识,这当然不是使用您提到的广泛模式的唯一方法。 Josh Smith已经写了大量关于这些概念的材料。 WPF Apps With The Model-View-ViewModel Design Pattern将是一个很好的开始!

+0

我想我得到的基本理念与存储库类。因此,如果我有1个客户,它返回我的CustomerModel的DataContext的 表对象。对于1桌全部清楚,但如果我有1个客户由多个表组成 。我是否从版本库构建并返回完成的ViewModel,或者我是否比存储库中的版本号为 例如,我的Customer对于每个表中的4个表中存在一个函数,该函数返回客户的表对象 ?在ViewModel中,这4个对象是handelt,ViewModel是在那里构建的? – Marcus 2010-09-29 08:38:47