WPF,应用程序设计建议和数据库并发

时间:2009-11-06 10:26:28

标签: wpf mvvm

我是WPF的新手,所以我花时间在网上搜索关于如何完成工作的示例和教程。我已经得出结论,前进的方法是尝试使用MVVM模式作为我的应用程序结构的指导。如果没有我的技术能力,我完全可以理解这个理论。我有一两个问题,希望你或许能指出我在应用程序设计方面的一些问题。

  1. 我希望保留一份客户列表。我见过几个例子。这些涉及加载包含Customer对象列表的Customers存储库。创建了Customer的相应View和ViewModel。当用户选择要编辑的客户时,将在Customers集合中为Customer对象创建View和ViewModel。这样可以在进行更改时使所有内容保持同步。我的问题是:我的客户模型非常复杂,它包含基本的客户信息,名称,地址等,还包含有关客户,类别列表,产品配置文件,目标预算等的属性。我希望这些属性可以在客户中进行编辑查看,但不希望将它们加载到Customers存储库中的开销。我只想在需要时加载扩展的客户信息,但更新了客户视图的更改。实现这一目标的最佳方法是什么?

  2. 我的第二个问题是:如果我将客户信息拆分为多个选项卡,我应该为每个选项卡分别使用View和ViewModel,还是只有一个View。什么是最佳做法?

  3. 我想我会使用Linq to SQL来处理数据库处理。在多用户环境中,客户可能同时由多个用户添加。如何反映我的Customers存储库中其他用户的新增内容?我需要重装吗?

  4. 有关处理数据库并发问题的任何建议。如果其他用户编辑或删除了我正在编辑的客户,那么当我尝试保存时会发生什么?我熟悉数据集和ADO.net,并且处理使用DataAdapter时出现的任何并发错误,Linq to SQL是否有类似的方法?

  5. 我很欣赏这里有很多模糊的问题。但我要感谢所提供的任何指导。

    此致 添

2 个答案:

答案 0 :(得分:1)

我会告诉你我的意见,但你必须形成自己的意见。

我不太喜欢这些样本,因为它们只为一个实体(客户)做了很多工作。我的应用程序中有很多实体,所以我最终得到了一些代码生成并使用了更多的继承。

样品需要一些现实检查。例如,在Josh Smith MVVM示例中,如果您更改客户,则更改会传播到列表和其他位置,这在示例中很好,但如果您有业务应用程序,则不希望传播除非用户按下“保存”并将所有业务规则应用于对象,否则更改。

我也不会购买纯MVVM,因为禁止在代码中放置任何东西,你必须code lots of lines only for a double-click,来点人,这是一个简单的双击。

关于你的问题:

  1. 实施延迟加载列表(see Rob Connery post
  2. IMO,单一观点。
  3. 你必须重装。添加刷新按钮以列出并让用户决定何时刷新。

答案 1 :(得分:1)

我开源sample framework called SoapBox Core用于使用MVVM进行WPF(并且还可以使用MEF进行扩展)。如果你忽略了MEF部分,那么就如何做你正在谈论的事情有一些好主意。我特别想看一下Options Dialog是如何工作的,因为它处理了Eduardo指出的问题(如何处理编辑内容,但只在用户提交更改时将结果发布到应用程序的其余部分)。在这种情况下,它使用.NET中的用户设置作为后备存储,但它可以使用您想要的任何内容,例如实体。