我正在开发的一个应用程序广泛使用 Linq to EF。它是多租户的,因此不同的客户将所有数据都存储在同一个数据库中。
一些客户想要自定义报告。理想情况下,这些自定义报告的定义将针对客户存储在数据库中,因为将这些报告硬编码到主代码中是不切实际的(它很快就会失控)。
我过去通过存储 SQL 字符串解决了这个问题,然后使用context.SqlQuery(myReportSQL)
. 它工作得很好。
两个想法:
目前,客户无法编辑 SQL 字符串。它在内部进行管理,以避免运行错误类型的查询。你会如何建议向客户开放这个?查询构建器界面(欢迎对插件有任何建议)?只允许 SELECT 语句的东西?
更好的方法是使用 LINQ to EF 查询,因为:确保它只是一个 SELECT 更容易,我可以在最后链接额外的 WHERE 以确保它们只获得正确的数据,并且它更具可读性。
那么对于选项 2,您如何将其存储在数据库中,然后有效地“评估”它?
我已经看到动态 LINQ 库在一定程度上有所帮助,但我担心它已经过时并且可能会被丢弃/不支持 EF6 等。