我是WPF的新手。我学到的是WPF遵循MVC模式。我的想法是使用WPF和NHibernate设计一个新的应用程序,但NHibernate使用MVVM模式。这与WPF的MVC并不完全吻合。好吧,有很多“解决方案”可以解决这个冲突,但对我来说这听起来不太好。
我的问题:是否有任何“掌握方法”使WPF桌面应用程序的数据在SQL-Server数据库中持久存在?微软说什么?你说什么?
答案 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而言,这些模式和技术将存在于模型中。视图模型将充当中介 - 因此您不会也不应该将视图直接绑定到持久对象。
我希望这有用!