【问题标题】:WPF, WCF, Entity, MVVM doubts!WPF、WCF、Entity、MVVM的疑惑!
【发布时间】:2010-12-20 21:14:32
【问题描述】:

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

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

  1. 我在服务中使用 LINQ 来获取数据,然后从 WPF(通常是 obersvablecollections)中获取数据。
  2. 一切都在视图部分工作,例如填充数据网格,根据需要查看视图。

但我有以下疑问:

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

【问题讨论】:

    标签: wpf wcf entity-framework mvvm light


    【解决方案1】:

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

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

    有充分的理由将其分开。

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

    3 - 我会尝试只发送已更改的实体。这可以通过将集合传递给您的视图模型来完成,并让您的视图模型找出发生了什么变化。

    4 - 我不太明白你想做什么。通常,要制作 TreeView,您应该为每个视图模型创建 HierarchicalDataTemplate。 TreeView 控件将负责其余的工作。你真的应该做一些关于这个的教程,因为这有点难以理解。

    【讨论】:

    • 所有服务引用方法调用都应该在模型中?而不是在视图模型中?但我见过很少有人会从视图模型本身进行服务引用调用的示例项目。这是一种不好的做法吗?
    • 我会从视图模型进行服务调用。基本上,View 是你的 WPF Xaml+Code 背后,View Model 是你的逻辑,而 Model 是数据对象本身。看看这个网站,它显示了 MVC、MVP、MVVM 之间的区别(带有图表!):wpftutorial.net/MVVM.html
    猜你喜欢
    • 2011-04-14
    • 1970-01-01
    • 1970-01-01
    • 2020-11-02
    • 2017-02-16
    • 2013-09-06
    • 1970-01-01
    • 2013-08-12
    • 2018-11-30
    相关资源
    最近更新 更多