我使用d60 / Cirqus查看示例SqlsugCirqusDemo。我想知道如何编写查询部分。例如,我想通过orderid或orderby id
中的订单商品列表获取订单答案 0 :(得分:2)
我认为您打算链接到the Cirqus demo:)
我主张人们与Cirqus一起使用的方法是只让Cirqus帮助您获取创建和更新的视图数据,然后您自己去查询 - 即没有任何帮助来自Cirqus。
以下是推理:
如果让Cirqus帮助您在某个特定数据存储(例如SQL Server)中创建视图,可能是因为您想要使用该数据存储的某些功能(例如聚合,连接等)。
如果Cirqus可以帮助您查询该数据,我们要么必须1)将每个视图数据存储包装在以该数据存储为目标的API中,或者2)创建某种适用于所有数据的抽象商店(例如MongoDB,SQL Server,RavenDB等)。
因此我的建议如下:让Cirqus帮助您获取您的观点,但是在查询时,您只需使用可用的客户端API(*)
在the demo project中,OrdersView
存储在MongoDB(配置为here)中 - 在这种情况下,我会配置我的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)