2

我们有一个应用程序允许用户向我们的表中添加自定义列(也许不是最好的主意,但就是这样)。

我们现在(重新)设计我们的数据访问层(我们之前真的没有),现在我们将在查询 SQL 数据库时在我们的数据映射器中使用参数化查询(之前我们连接 SQL 字符串并转义所有输入)。

现在我们正在尝试确定处理自定义列的最佳方式,以便查询、创建和更新这些记录。自定义属性将存储在我们的“业务对象”上的字典中,所以我正在考虑这样做:

查询数据

  • 使用 SELECT * 获取所有列并填充我们的属性并将其余(自定义数据)存储在业务对象的字典中。

创建/更新

  • 迭代表中的所有列(类似于:SELECT COLUMN_NAME FROM information_schema.columns WHERE TABLE_NAME = 'TableName'
  • 通过检查字典和表中都存在哪些列,然后将字典中的值作为变量添加到 SQLCommand,生成一个 SQL 字符串(带有参数化的变量名)

还是在使用参数化查询的同时有更好的方法?

4

1 回答 1

2

如果您要添加临时列,ORM 会变得非常棘手。在某些方面,退回到DataTable/ DataAdapter(我不是它的粉丝)可能是一种选择。就个人而言,我会先看看存储自定义数据的其他选项:

  • 一个xml专栏
  • 针对每条记录的一组键/值对(在第二个表中)
  • a中的一些其他分隔格式[n]varchar(max)

你真的需要添加列吗?

于 2009-12-17T22:49:14.200 回答