我的 Web 项目中有一组快速增长的 Telerik 报告。我的数据提供策略是每个报告都有一个包含 SQL 查询的公司文本文件。我处理复杂的过滤条件,比如长的“x 在(y,z,a,b,c....)”或“((x=1) and (x < y))”,重复一百次,通过在使用文本文件查询获取报表的 DataTable 之前对其进行文本替换。
所有报表都是派生自 的类Telerik.Reporting.Report
,它们具有用作报表元数据的有限属性,例如报表的业务标题与报表的程序化名称。报告类别、报告的 SQL 查询文件的名称、报告的可能备用查看页面、要为报告禁用的公共过滤器参数的子集等属性没有字段。
我发现这里的第一个候选解决方案没有吸引力,即。在文件、web.config 或数据库表中创建和维护“报告设置”存储。该存储与实际报告分离,在它们或存储中工作需要频繁且烦人的上下文交换。
我更喜欢的想法是使用类似于动态数据元数据方案的东西,其中实体类上的属性赋予另一个类来保存实体的元数据。我还可以扩展Telerik.Reporting.Report
,添加可能要附加到报告的属性的字典,并从中派生我的所有报告。
对我当前想法的任何批评,或对其他选择的建议,将不胜感激。