我们正在开发一个带有 SQL Server 后端的 .NET 应用程序。客户端请求能够在部署应用程序后向实体动态添加自定义属性。
正如在类似问题中所建议的那样,我们可以创建一个表,然后该表将为每个自定义属性值(实体属性值模型)包含一行。但是,我们正在考虑允许最终用户实际修改表(在同一个问题中也建议),即添加和删除列。
(编辑:如评论中所述,DDL 不会由用户或应用程序直接执行,而是通过存储过程确保一切顺利运行)
主要原因是:
- 改进的性能/可搜索属性
- 属性几乎总是需要以列的形式出现,例如在用户界面的数据网格中或在提取数据以在 Excel/PowerPivot 中进行进一步处理时。
- 数据是强类型的(而不是将所有属性值存储为 varchar)
- 简化的数据模型
有什么我们应该注意的警告吗?
想到的事情是:
- 可能无法处理不断变化的数据结构的备份/恢复操作
- 未正确更新以反映这些更改的依赖对象(例如视图)(依赖视图必须执行 a
select * from table
才能包含任何添加的列)。 - ...
非常感谢有关此方法的任何输入。