【问题标题】:CQRS read side ORM or pure ADO.NET?CQRS读端ORM还是纯ADO.NET?
【发布时间】:2014-03-29 14:59:39
【问题描述】:

我正在使用 CQRS 模式实现我的第一个项目,现在我必须决定如何实现读取端。 我考虑的第一种方法是使用 ORM(实体框架/NHibernate,或者有人可以为这种情况推荐一些更快的 ORM?)并将模型映射到 sql 视图。最初我正在考虑使用索引视图,但我阅读了关于一些性能问题(在写入期间)的文章,这导致我放弃了这个想法(http://sqlblog.com/blogs/alexander_kuznetsov/archive/2009/06/02/be-ready-to-drop-your-indexed-view.aspx)。 我考虑的第二种方法是使用纯 ADO.NET(数据读取等)并自己编写 sql。 您认为哪种方法最好?还是有更好的?

【问题讨论】:

    标签: c# orm cqrs


    【解决方案1】:

    我建议使用dapperdotnetormlite

    我已经广泛使用了这两种工具,并且发现每次我转移到旧代码以帮助查询时,我都会重新使用它们。

    它们都非常快,并且提供了来自原始 ADO.NET 的足够抽象,使您的代码具有可读性。

    总的来说,我不是 ORM 的忠实粉丝,我曾经一直使用它们,但发现 CQRS 让我从使用相同的模型进行读写中解放出来,所以 ORM 有点成为一个巨大的痛苦.

    【讨论】:

    • Mini-ORM 可能是最好的选择。它们适用于平面读取模型,性能非常接近原始 ADO .NET,无需重复的数据读取器映射代码。
    【解决方案2】:

    这实际上取决于您的系统要求。正如@boz 所建议的那样,使用像 Dapper 这样的轻量级对象非常适合您的系统。此外,如果您的写入端相当简单,或者您处理命令以展平数据,您可以使用像 MongoDBRaven(或其他许多)这样的文档存储库,然后让您的读取端拉取对象出去。

    同样,这实际上取决于您的要求,但更简单的选择(如轻量级对象映射器或 NoSQL 选项)绝对适合您阅读方面。祝你好运!

    【讨论】:

    • +1 用于提及 NoSql。我经常在读取端混合使用 sql、mongo 和对象缓存 (.net)。
    • 谢谢@boz。我也使用过 Azure 表存储。那是一次有趣的经历。还不错。
    【解决方案3】:

    使用 NHibernate+Fluent 是我用过的最佳组合。干净的方法,非常易于使用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-15
      相关资源
      最近更新 更多