我使用 CQRS 瘦读取层为 UI 提供非规范化列表/报告数据。
在我的应用程序的某些部分,我想提供一个搜索框,以便用户可以过滤数据。
Lucene.NET 是我目前首选的全文搜索引擎,因为我之前已经实现过它并且对它非常满意。
但是,事物的搜索方面在哪里适合 CQRS?
我看到两个选项,但可能还有更多。
1] 我的控制器可以将搜索字符串传递给搜索层 (Lucene.NET),它返回一个 ID 列表,然后我可以将其传递给 CQRS 读取层。读取层将获取这些 ID 并将它们组装成 WHERE ID IN (1,2,3) 子句,最终将 DataTable 或 IEnumerable 返回给控制器。
List<int> ids = searchLayer.SearchCustomers("searchString");
result = readLayer.GetCustomers(ids);
2] 我的薄读取层可以直接将搜索编码到其中,所以我只需调用
readLayer.GetListOfCustomers("search string", page, page1);