WPF,WCF,实体,MVVM疑惑!

时间:2010-12-20 21:14:32

标签: wpf wcf entity-framework mvvm light

我在WPF项目中使用WCF服务引用,我的实体框架数据模型驻留在WCF项目中。

我正在使用MVVM Light框架。我正在做以下事情:

  1. 我在服务中使用LINQ来获取数据,然后通常从WPF,obersvablecollections中获取数据。
  2. 一切都在视图部分工作,例如填充数据网格,根据需要进行视图。
  3. 但我有以下疑虑:

    1. 这是在wcf和wpf之间传输数据的正确方法。
    2. 我还没有使用过该模型,我怀疑何时使用它?
    3. 我还想从datagrid保存数据。我能够将datagrid的更新数据的observablecollection传递给服务的函数。但是我如何从这个集合中更新实体?通过循环?听起来不对劲。一旦我从这个集合更新实体,我将能够使用saveChanges更新到数据库。
    4. 当我需要在树视图中显示分层数据时,从存储过程xml中在哪里制作数据层次结构?使用视图创建分组标准列?在服务中创建此列?在演示文稿中创建此列/属性?

1 个答案:

答案 0 :(得分:1)

1 - 没有正确的方法,这取决于您的要求和目标。

2 - 使用MVVM,模型应位于WPF和数据库之间。这意味着对数据库的所有调用都应该通过模型,并且对数据库的所有写入也应该通过模型。 WPF GUI应该只绑定到模型。这通常意味着您的WPF部分主要由XAML代码组成。访问数据库的所有代码都应该在模型中。

分离这个有充分的理由。

  • 您可以在模型上编写单元测试。
  • 视图模型独立于GUI的外观。这意味着您可以通过删除不同的组件并仅绑定到模型来轻松更改GUI。
  • 快速谷歌搜索可能会产生更多原因。

3 - 我会尝试仅发送已更改的实体。这可以通过将集合传递给视图模型来完成,并让您的视图模型找出已更改的内容。

4 - 我不太明白你想做什么。通常,要创建TreeView,您应该为每个视图模型创建HierarchicalDataTemplate。 TreeView控件将处理其余部分。你应该真的做一些这方面的教程,因为它有点难以理解。