我尽力想出一个合适的标题,如果没有多大意义,请找借口。我希望在下面更好地解释它。我们有一个基于 .Net 框架并使用 SQL 作为数据存储的应用程序。与任何应用程序一样,此应用程序需要支持可扩展性,例如支持额外的数据转换和验证。
示例:将应用程序视为提供一组输入表的工具,用户可以使用 access 或 excel(已经有 UI 和网格)将数据导入以允许数据导入。导入数据后,该工具会创建一个中间模型并对输入数据执行一些计算,然后以预定义格式抛出结果。输入表模式和中间模型模式是固定的,不会发生任何变化。在从输入数据导出中间模型的阶段需要可扩展性。允许用户能够更改数据获取的方式,例如,而不是按一个字段分组,而是允许按多个字段分组等。
为了支持这种灵活性,我看到有两种基本方法
选项 1:创建映射到 sql 数据模型的业务模型并向用户公开业务模型以允许他们覆盖转换并创建新的转换(例如,使用 LINQ 或纯 C#)
选项 2:公开整个 sql 数据模型并允许用户嵌入原始 SQL 查询来执行转换和验证。
我个人的偏好是使用选项 1,因为我不喜欢允许用户直接使用底层数据表。我更喜欢更受控制的访问。但是,这种方法要求用户具有编程语言(C# 或 VB)。另一方面,选项 2 可能只需要具有 SQL 编程知识的人来创建原始查询并将它们直接插入应用程序。但是,我认为这是一个不好的方法。
产品管理团队倾向于选择选项 2,因为他们认为从资源的角度来看它更灵活且易于实施。
因此,我试图提出这两种方法的优缺点,以更好地支持我对选项 1 的倾向。基本上,倾向于用 C# 或 VB .net 的编程语言完成工作,而不仅仅是使用普通的 SQL 查询。
请分享您的想法和意见。