3

伙计们,我正在考虑将诸如 Dapper.net 之类的 microORM 用于 CQRS 应用程序(Asp.Net MVC)的读取访问组件,并使用实体框架来操作域。

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

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

4

1 回答 1

7

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

在我们对这些库的评估中,我们真正喜欢 Simple.Data 和 Petapoco 的一件事是,它们每个都可以使您的查询适应不同的数据库引擎(包括 Mongo),而所需的调整最少,而 Dapper 基本上是一大堆 SQL 字符串 - - 它是“字符串类型的”。不要误会我的意思,Dapper 很棒,而且速度非常非常快,而且绝对可以很好地工作。只需在提交之前评估您的功能性和非功能性需求。

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

  • 5568 简单数据
  • 第4990章
  • 4913 小巧玲珑
  • 2203 海量
  • 第1152章

最后,您可能想要调查的一件事是您对读取模型完全支持 SQL 的推理。如果您的域正在发布事件(无论事件来源如何),并且您正在编写简单的平面/非关系视图模型,那么您可能能够摆脱像 JSON 文件这样简单的东西,这些文件被推送到浏览器然后浏览器解释并使用来填充您的 HTML 模板。有各种可用的选项,您只需要确定最适合您的方案的选项。

于 2012-02-10T02:38:23.830 回答