1

我在 WPF 项目中使用 WCF 服务引用,并且我的实体框架数据模型位于 WCF 项目中。

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

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

但我有以下疑问:

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

1 回答 1

1

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

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

将其分开是有充分理由的。

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

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

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

于 2010-12-21T16:29:50.167 回答