我接管了一个需要重写的 ASP.NET 应用程序。我需要复制的这个应用程序的核心功能修改了通过 ODBC 从第三方软件访问的 SQL Server 数据库。

第三方应用程序创建代表打印机标签的文件,由用户生成。这些标签文件直接引用 ODBC 源的字段。表格的每一行代表一个填充标签字段的产品。 (因此,在这些文件中直接引用了表的列名。)

ASP.NET 应用程序允许用户通过添加或编辑代表产品的特定行来创建/更新标签引用的这些字段的数据。

它还允许偶尔添加新字段......它实际上在核心表中创建了一个由标签引用的新列。

我的担忧:我以前从未以编程方式更改现有表的列。现有的应用程序似乎可以很好地处理此功能,但是在我在新应用程序中盲目地做同样的事情之前,我想知道这样做存在哪些陷阱(如果有的话)......以及是否有任何明显的替代方案.

最佳答案

这在很大程度上取决于您要对这些表运行的查询。 KVP 的主要缺点是更复杂的查询会变得非常低效。

两者的“混合”方法可能很有趣。

将要查询的值存储在专用列中,并将其余值保留在 XML blob 中(MS SQL 具有甚至可以在 XML 内部进行查询的出色功能)或 KVP 包。就个人而言,我真的不喜欢 DB 中的 KVP,因为您无法再构建特定于应用程序逻辑的索引。

另一种方法是根本不对特定列进行建模。您创建通用的“自定义属性”表,例如:Attribute1、Attribute2、Attribute3、Attribute4(用于所需的数据类型等)然后将元数据添加到您的数据库中,描述 AttrX 对特定类型打印机标签的含义。

同样,这实际上取决于您最终希望如何使用该数据。

关于c# - 以编程方式向 SQL Server 数据库添加列,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1400301/

10-12 16:28
查看更多