我们有一个应用程序允许用户向我们的表中添加自定义列(也许不是最好的主意,但就是这样)。
我们现在(重新)设计我们的数据访问层(我们之前真的没有),现在我们将在查询 SQL 数据库时在我们的数据映射器中使用参数化查询(之前我们连接 SQL 字符串并转义所有输入)。
现在我们正在尝试确定处理自定义列的最佳方式,以便查询、创建和更新这些记录。自定义属性将存储在我们的“业务对象”上的字典中,所以我正在考虑这样做:
查询数据
- 使用 SELECT * 获取所有列并填充我们的属性并将其余(自定义数据)存储在业务对象的字典中。
创建/更新
- 迭代表中的所有列(类似于:SELECT COLUMN_NAME FROM information_schema.columns WHERE TABLE_NAME = 'TableName'
- 通过检查字典和表中都存在哪些列,然后将字典中的值作为变量添加到 SQLCommand,生成一个 SQL 字符串(带有参数化的变量名)
还是在使用参数化查询的同时有更好的方法?