【问题标题】:What does Microsoft suggest to make a WPF application persistent?Microsoft 建议如何使 WPF 应用程序持久化?
【发布时间】:2011-12-04 13:00:13
【问题描述】:

我是 WPF 新手。我学到的是 WPF 遵循 MVC 模式。我的想法是使用 WPF 和 NHibernate 设计一个新应用程序,但 NHibernate 使用 MVVM 模式。这与 WPF 的 MVC 并不真正适合。好的,有很多“解决方案”来处理这个冲突,但对我来说这听起来不太好。

我的问题:是否有任何“主要方法”可以使 WPF 桌面应用程序的数据在 SQL-Server 数据库中持久化?微软怎么说?你说什么?

【问题讨论】:

  • 我认为您应该多阅读一些有关 MVC 和 MVVM 等设计模式的内容。
  • 如果我理解这个问题,您希望将应用程序范围的设置保留在数据库而不是本地文件上。在这种情况下,您将从 SettingsProvider 派生一个类并相应地装饰它;然后创建你的类的一个实例来访问/保存你想要在你的应用程序的连续执行之间保留的信息。

标签: sql-server wpf linq nhibernate persistence


【解决方案1】:

什么都没有。你弄错了 - 这就像问梅赛德斯建议使用什么类型的挡风玻璃刮水器的汽车清洁材料。

基本上持久化是应用程序的一部分,WPF 是表示和另一部分。它使您呈现数据的方式零差异。你创造了一个摇狗的情况。

这与 WPF 中的 MVC 并不真正适合

作为使用过它的人 - 它绝对可以。完全。

好的,有很多“解决方案”来处理这个冲突,但对我来说这并不是真的 听起来不错。

了解有关建筑的更多信息。

是否有任何“主要方法”可以使 WPF 桌面应用程序的数据在 SQL-Server 中持久化 数据库?

没有。与任何其他类型的应用程序相同 - 总是有权衡,因此不存在灵丹妙药。因此——嗯——你必须想出解决方案,这需要经验。

NHibernate 但 NHibernate 使用 MVVM 模式

上次我检查时,NHibernate 是一个完全能够支持多种不同方式处理应用程序的 O/R 映射器。所以,这个说法是错误的。

【讨论】:

    【解决方案2】:

    Microsoft 在 WPF 中推荐的模式是 MVVM 模式。您可以在许多博客文章中查看这一点,但这是一个很好的起点:

    MSDN Magazine - WPF Apps With The Model-View-ViewModel Design Pattern

    如果您想了解有关 Microsoft 推荐架构的更多信息,可以查看模式和实践网站,或查看 David Hayden 的网站,该网站有很多精彩的屏幕截图。

    在为桌面客户端构建数据访问层方面,有很多方法。一些常见的有存储库模式、活动记录和直接使用 ORM。与 NHibernate 和实体框架不同,Active Record 模式不是基于 POCO。对象在自身内部保持持久性。这使得一些分布式和断开连接的场景更加有效。 Ayende 在这篇文章中总结了一种远离存储库模式的趋势:

    Ayende - Repository is the new Singleton

    基本上根据这篇文章,NHibernate 中的会话对象或实体框架中的 DBContext 对象本身遵循一种存储库模式,因此添加存储库层是多余的。

    就 MVVM 而言,这些模式和技术将存在于模型中。视图模型将充当中介 - 因此您不会也不应该将视图直接绑定到您的持久对象。

    我希望这会有所帮助!

    【讨论】:

    • 非常感谢!这确实很有帮助!
    猜你喜欢
    • 1970-01-01
    • 2011-02-24
    • 1970-01-01
    • 1970-01-01
    • 2021-06-29
    • 1970-01-01
    • 1970-01-01
    • 2013-05-07
    • 2011-06-03
    相关资源
    最近更新 更多