使用 MVC5,EF6 Model First
手头的问题: DYNAMIC(用户创建的)我需要存储在数据库中的字段。
我今天整天都在互联网上撞击互联网,试图获得更好的东西,而不是为动态字段编写alter table,update和select命令。
我不相信序列化数据并保存数据也是一种很好的方法。
你们想要分享哪些更好的想法/最佳做法?
答案 0 :(得分:2)
一种可能的方法是使用另一个表作为用户定义的扩展值。因此,如果您的主表名为客户,那么它将具有已修复的所有标准列。然后,您将拥有一个名为 CustomerExtra 的表,用于存储每个客户行的用户定义字段。
因此,如果用户添加了用户定义的字段,那么您需要为每个客户行的 CustomerExtra 表添加一行。每个行都将存储用户定义字段的名称以及值。要完成这项工作, CustomerExtra 将需要您允许用户指定的每种类型的列。
此方法的优点是,在添加或删除新的用户定义字段时,无需更改数据库的架构。这确保了购买和使用系统的每个客户端的结构都相同,即使每个客户端都设置了自己独特的用户定义字段集。
缺点是查询和更新的额外复杂性,因为需要与其他列进行交互。这也会增加性能,因为您要查询两个表而不是一个表。