在CQRS中使用MicroORM作为读取层

时间:2012-02-08 13:13:32

标签: cqrs dapper massive

民间, 我正在考虑使用诸如Dapper.net之类的microORM作为CQRS应用程序(Asp.Net MVC)的读访问组件,其中Entity Framework用于操作域。

这是CQRS之光,我没有使用事件来源等。我已经看过几次提到CQRS中的只读模型应该是轻/简单可能查询数据层,可能使用像ADO.net这样的东西 这意味着可能在我们的代码或某些XML文件中硬编码SQL查询字符串。我应该如何证明这种方法的合理性,我们必须一方面维护域映射,另一方面维护SQL语句?

有没有人以这种方式在CQRS解决方案中使用MicroORM? 谢谢 米克

1 个答案:

答案 0 :(得分:7)

是的,绝对可以使用Dapper,PetaPoco,Massive,Simple.Data或您想要的任何其他微型ORM。在过去,我们使用NHibernate来解决问题,但它是10,000磅。大猩猩与我们需要的相比。

在我们对这些库的评估中,我们真正喜欢Simple.Data和Petapoco的一件事是,他们每个人都可以调整你的查询到不同的数据库引擎(包括Mongo),只需要很少的调整,而Dapper基本上是一大堆SQL字符串 - 它是“字符串输入”。不要误会我的意思,Dapper很棒,非常非常快,绝对会很棒。在提交之前,只需评估您的功能和非功能需求。

以下是每个主要微型ORM使用NuGet的相对下载次数(截至2012年1月1日左右)。对我们来说,拥有一个拥有大量下载量的良好社区始终是必须的,以便在出现问题时帮助解决问题:

  • 5568 Simple.Data
  • 4990 Petapoco
  • 4913 Dapper
  • 2203 Massive
  • 1152 OrmLite

最后,您可能想要研究的一件事是您为阅读模型完全背后SQL的原因。如果您的域名正在发布事件(无论事件来源如何),并且您正在编写简单,平面/非关系视图模型,那么您可以使用像推送到浏览器的JSON文件这样简单的东西。然后,浏览器会解释并使用它来填充HTML模板。有各种各样的选项可供选择,您只需确定在您的场景中最有效的选项。