我目前正在开发一个 MVC 4 应用程序。我计划实现一个命令查询分离模式来提高性能和应用程序的结构。我对我的命令很满意——将我的视图模型映射到我使用的实体,然后使用 nhibernate 来保存我的数据。命令和查询将在同一个数据库上运行。
我有点不确定管理我的查询的最佳方法。在我的上一个项目中,我对所有读取/查询都使用了存储过程,然后使用 automapper 将我的 IDataReaders 映射到我的 ViewModels。这工作正常,但主要问题是编写存储过程的周转时间以及域模型更改存储过程不同步的时间。
因此,理想情况下,我想要从我的视图模型中自动生成视图或存储过程的东西。但实际上,我看不到这样做的方法。由于 Sprocs/Views 需要一些可能不止一张表的知识。因此,仅仅反映 View 模型属性是不够的。我可以为每个视图模型自动生成一个表,在开发过程中读取它,然后一旦域稳定并且在我们去测试之前将它们转换为视图/存储过程?
所以我想我要问的是:
- 有没有人设法解决我上面描述的 sproc/view 自动生成问题?(这将是我最喜欢的结果!)或者更好的是设计了一个更优雅的解决方案!
- 或者只在绝对必要的地方实现原始 ADO 读取是否更明智——即搜索,并且不需要大量的存储过程/视图。但是仍然将我的查询分离到一个单独的通道中(但其中一些使用 NHibernate,而另一些使用我的 ADO 阅读器)。
(ps我已经查看了其他与stackoverflow CQS相关的问题,我希望我的问题足够不同以保证这个问题)