C# CQRS读取端ORM还是纯ADO.NET?

C# CQRS读取端ORM还是纯ADO.NET?,c#,orm,cqrs,C#,Orm,Cqrs,我正在使用CQRS模式实现我的第一个项目,现在我必须决定如何实现读取端。 我考虑的第一种方法是使用ORM(实体框架/NHiBernEnter,或者也许有人可以为我推荐一些更快的ORM),并将模型映射到SQL视图。起初我考虑使用索引视图,但我读了一篇关于性能问题的文章(在编写过程中),这促使我放弃了这个想法()。 我考虑的第二种方法是使用纯ADO.NET(数据读取等)和自己编写SQL。 你认为哪种方法最好?或者有更好的吗?我建议使用或 我已经广泛地使用了这两种工具,并发现每次使用遗留代码来辅助查询

我正在使用CQRS模式实现我的第一个项目,现在我必须决定如何实现读取端。 我考虑的第一种方法是使用ORM(实体框架/NHiBernEnter,或者也许有人可以为我推荐一些更快的ORM),并将模型映射到SQL视图。起初我考虑使用索引视图,但我读了一篇关于性能问题的文章(在编写过程中),这促使我放弃了这个想法()。 我考虑的第二种方法是使用纯ADO.NET(数据读取等)和自己编写SQL。 你认为哪种方法最好?或者有更好的吗?

我建议使用或

我已经广泛地使用了这两种工具,并发现每次使用遗留代码来辅助查询时,我都会返回到它们

它们都非常快速,并且从原始ADO.NET提供了足够的抽象,使代码可读


一般来说,我不是ORM的超级粉丝,我经常使用它们,但发现CQR让我不再使用相同的模型来读写,所以ORM成了一个巨大的麻烦。

这取决于你的系统需求。按照@boz的建议,使用轻量级对象,如Dapper,可以很好地适用于您的系统。此外,如果您的写端相当简单,或者您处理命令以平展数据,那么您可以使用像or(或其他许多)这样的文档存储库,然后让您的读端拉出对象


同样,这确实取决于您的需求,但更简单的选择,如轻量级对象映射器或NoSQL选项,肯定适用于您的阅读端。祝你好运

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

+1用于提及NoSql。我经常在读取端混合使用sql、mongo和对象缓存(.net)。谢谢@boz。我也使用过Azure表存储。那是一次有趣的经历。不错。迷你ORM可能是最好的选择。它们可以很好地处理平面读取模型,并且在没有重复的数据读取器映射代码的情况下,其性能非常接近原始ADO.NET。