2012-02-08 65 views
3

Folks, 我正在考虑使用microORM(例如Dapper.net)作为CQRS应用程序(Asp.Net MVC)的读取访问组件,并使用实体框架来操作域。在CQRS中使用MicroORM读取图层

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

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

回答

7

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

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

下面是使用NuGet为每个主要微型ORM下载的相对数量(截至2012年1月1日)。对于我们来说,有一个良好的社区有很多下载的始终,以帮助化解问题,当出现一绝:

  • 5568 Simple.Data
  • 4990 Petapoco
  • 4913小巧玲珑
  • 2203海量
  • 1152 OrmLite

最后,您可能需要调查的一件事是SQL的背后你的推理完全为你读的车型。如果你的域名正在发布事件(不管事件源头),并且你正在写简单的,平坦的/非关系的视图模型,那么你可能会摆脱一些简单的事情,比如推送到浏览器的JSON文件浏览器然后解释并使用填充您的HTML模板。有各种可用的选项,您只需确定在您的方案中最适合的选项。

+0

我可以评论说我们正在使用Dapper来读取模型。我们只是返回动态,将它们转换为JSON并将它们传递给视图。 Javascript和jQuery模板基于JSON构建页面的内容。 我们会使用一个对象数据库,但IT部门中仍然存在一些挂念,他们会为了不使用SQL而发愁。 – stimms 2012-02-15 18:09:04

+0

@ user769405如果你想要刺激回应,你需要包括他们在你的评论中,让他们看到它 – 2012-03-28 11:32:50

+0

@stimms任何机会,你可以发布从短小精灵动态到JSON的片段:) – mikelus 2012-03-29 12:41:40