使用MicroORM作为CQRS中的读层

3
大家好,我正在考虑使用像Dapper.net这样的微型ORM来处理CQRS应用程序(Asp.Net MVC)的读取访问组件,同时使用Entity Framework来操作领域。
这是轻量级的CQRS,我没有使用事件溯源等。我已经多次看到提到CQRS中只读模型应尽可能轻/简单,查询数据层时应该使用像ADO.net这样的工具。 这意味着我们可能需要在代码或某个XML文件中硬编码SQL查询字符串。我们如何证明这种方法是正确的,其中我们必须在一侧维护领域映射,在另一侧维护SQL语句?
有人在CQRS解决方案中使用过微型ORM吗? 谢谢 Mick
1个回答

7
是的,您完全可以使用Dapper、PetaPoco、Massive、Simple.Data或任何其他微ORM。在过去,我们使用NHibernate来解决问题,但它相对于我们所需的东西来说太笨重了。
在我们评估这些库时,我们非常喜欢Simple.Data和Petapoco的一点是,它们每个都可以将您的查询适应不同的数据库引擎(包括Mongo),几乎不需要进行大量调整,而Dapper基本上就是一个巨大的SQL字符串--它是"stringly typed"。不要误会,Dapper非常好,速度非常快,绝对可以很好地工作。只是在承诺之前,请评估您的功能和非功能需求。
以下是每个主要微ORM的NuGet下载相关数量(截至2012年1月1日左右)。对我们来说,拥有许多下载量的良好社区始终必不可少,以帮助解决问题:
- 5568 Simple.Data - 4990 Petapoco - 4913 Dapper - 2203 Massive - 1152 OrmLite 最后,您可能想调查SQL背后的原因,以用于读取模型。如果您的领域正在发布事件(无论事件源如何),并且您正在编写简单、平坦/非关系视图模型,则可能只需使用JSON文件即可向浏览器推送,然后浏览器解释并用于填充HTML模板。有各种各样的选项可供选择,您只需确定哪种最适合您的情况即可。

我可以评论一下,我们正在使用Dapper来构建我们的读模型。我们只是返回动态数据,将它们转换为JSON格式并传递给视图。Javascript和jquery模板根据JSON数据构建页面内容。 虽然我们更愿意使用对象数据库,但由于IT部门仍有一些疑虑,他们可能会对不使用SQL感到惊慌。 - stimms
如果您想让 @user769405 回复,您需要在评论中 @ 提及他们,这样他们才能看到。 - Ruben Bartelink
@stimms 有没有可能发一段从Dapper到Dynamics再到JSON的代码片段呢 :) - mikelus
@user769405 好的 - 我会写一篇博客文章,并在这里发布链接。 - stimms
@stimms 你如何返回一个 List<dynamic> 并将它们序列化为 JSON? - grudolf

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接