我看一下使用d60/Cirqus的示例SqlsugCirqusDemo。我想知道如何编写查询部分。例如,我想通过orderid或orderid
我想你的意思是链接到Cirqus演示:)
我提倡人们使用Cirqus的方法是只让Cirqus帮助您获得创建和更新的视图数据,然后您只需自己去查询它-即不需要Cirqus的任何帮助。
原因如下:
如果你让Cirqus帮助你在某些特定的数据存储(例如SQL Server)中创建视图,这可能是因为你想使用该数据存储的某些功能(例如聚合,连接等)。
如果Cirqus可以帮助你也查询数据,我们要么必须1)包装每个视图数据存储在一个API中,针对该数据存储,或者2)创建某种抽象,将适用于所有数据存储(例如MongoDB, SQL Server, RavenDB等)。
- 将是大量的工作,不会提供任何好处,至少没有提到的数据存储,因为他们都有很好的。net客户端api。
- 将是愚蠢的,因为您将如何使用每个数据存储的特定功能?
因此,我的建议是:让Cirqus帮助您将视图放置到位,但在查询时间时,您只需使用可用的客户端API (*)
在演示项目中,OrdersView
存储在MongoDB中(此处配置)-在这种情况下,我将配置我的IoC容器注入IQueryable<OrdersView>
,它将解析为viewsMongoDatabase.GetCollection<OrdersView>(typeof(OrdersView).Name).AsQueryable()
-然后我可以这样做:
var order = orders.First(o => o.Id == orderId);
使得c#非常干净,完全没有持久性问题的污染,如果需要的话,可以进行简单的单元测试。
(*)我可以,但是,推荐MongoDB作为视图数据存储:)它可以在数据库中存储一些漂亮的丰富对象,同时允许您在检索数据的时候使用IQueryable<YourView>
(尽管您需要使用v. 1.10或等到MongoDB驱动程序的2.1版才能做到这一点- Cirqus的MongoDB集成目前使用1.10)