【问题标题】:Using MicroORM for read layer in CQRS在 CQRS 中使用 MicroORM 读取层
【发布时间】:2012-02-13 00:31:49
【问题描述】:

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

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

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

【问题讨论】:

    标签: cqrs dapper massive


    【解决方案1】:

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

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

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

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

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

    【讨论】:

    • 我可以评论说我们正在使用 Dapper 作为我们的读取模型。我们只是返回动态,将它们转换为 JSON 并将它们传递给视图。 Javascript 和 jquery 模板基于 JSON 构建页面内容。我们会使用对象数据库,但 IT 部门中仍有一些人会因为不使用 SQL 而大发雷霆。
    • @user769405 如果您希望 stimms 做出回应,您需要将它们包含在您的评论中,以便他们看到它
    • @stimms 任何机会你都可以发布从 dapper 到动态到 JSON 的 sn-p :)
    • @user769405 是的 - 我会写一些博客并在此处发布链接。
    • @stimms 如何返回 List 并将它们序列化为 JSON?
    猜你喜欢
    • 1970-01-01
    • 2013-04-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多