CQRS读取端使用ORM还是纯ADO.NET?

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

3
这取决于您系统的要求。像@boz建议的那样选择一个轻量级对象,比如Dapper,可能非常适合您的系统。此外,如果您的写入端相当简单或者您处理命令以展开数据,则可以使用文档存储库,如MongoDBRaven(或其他许多选项),然后只需让读取端提取对象即可。
同样,这真的取决于您的要求,但像轻量级对象映射器或NoSQL选项这样的简单选择绝对可以适用于您的读取端。祝你好运!

+1 提到 NoSql。在读取方面,我经常使用 sql、mongo 和对象缓存 (.net) 的混合。 - boz
谢谢@boz。我也用过Azure表存储,那是一次有趣的经历。还不错。 - David Hoerster

3
我建议您使用dapperdotnetormlite
我已广泛使用这两个工具,并发现每次转入旧代码时都会返回这些工具以协助查询。两者都非常快速,并提供足够的抽象来使您的代码可读。
总体而言,我不是ORM的铁粉,尽管我曾经一直使用它们,但后来发现CQRS使我从使用相同的模型来读取和写入中获得了自由,所以ORM变成了一个巨大而麻烦的问题。

一个Mini-ORM可能是最好的选择。它们与平面读取模型配合良好,并且执行非常接近原始ADO .NET,而无需重复的数据读取器映射代码。 - Dmitry S.

0

NHibernate+Fluent 是我使用过的最好的组合。用起来干净简洁,非常容易上手。


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