微软建议将WPF应用程序保持持久性?

时间:2011-12-04 13:00:14

标签: sql-server wpf linq nhibernate persistence

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

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

2 个答案:

答案 0 :(得分:4)

无。你错了 - 这就像询问梅赛德斯使用特定类型的WINDSHIELD WIPER作为汽车清洁材料的建议。

基本上,持久性是应用程序的一部分,WPF是演示文稿,另一个是演示文稿。它使您呈现数据的方式与ZERO不同。你创造了一个摇摆狗的情况。

  

这与WPF的MVC非常吻合

正如somene使用过这个 - 它绝对是。完全。

  

好的,已经退出了很多"解决方案"处理这种冲突,但对我来说这并不是真的   听起来不错。

了解有关adrchitecture的更多信息。

  

有没有"掌握方式"使WPF桌面应用程序的数据在SQL Server中持久化   数据库?

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

  

NHibernate但NHibernate使用MVVM模式

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

答案 1 :(得分:2)

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

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

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

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

Ayende - Repository is the new Singleton

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

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

我希望这有用!