我接管了一个需要重写的ASP.NET应用程序.我需要复制的此应用程序的核心功能修改了从第三方软件通过ODBC访问的SQL Server数据库. 第三方应用程序创建表示由用户生成的打印机标签的文件
第三方应用程序创建表示由用户生成的打印机标签的文件.这些标签文件直接引用ODBC源的字段.表格的每一行代表一个填充标签字段的产品. (因此,在这些文件中直接引用表的列名.)
ASP.NET应用程序允许用户通过添加或编辑表示产品的特定行来创建/更新标签引用的这些字段的数据.
它还允许偶尔添加新字段……它实际上在核心表中创建了一个由标签引用的新列.
我担心的是:我以前从未以编程方式更改现有表的列.现有的应用程序似乎处理这个功能很好,但在我在新的应用程序中盲目地做同样的事情之前,我想知道这样做有什么样的陷阱,如果有的话…并且如果有任何明显的选择.
它在很大程度上取决于您要对这些表运行的查询. KVP的主要缺点是更复杂的查询可能变得非常低效.两者的“混合”方法可能很有趣.
将要查询的值存储在专用列中,将其余值保留在XML blob中(MS SQL具有很好的功能,甚至可以在XML中查询)或者在KVP包中.就个人而言,我真的不喜欢DB中的KVP,因为你不能再构建特定于应用程序逻辑的indix.
另一种方法是根本不对特定列进行建模.您可以创建通用的“自定义属性”表,例如:Attribute1,Attribute2,Attribute3,Attribute4(用于所需的数据类型等等)然后,您可以将元数据添加到数据库中,以描述AttrX对特定类型的打印机标签的含义.
同样,它实际上取决于您最终如何使用该数据.