EF模型的动态场~必须有更好的方法

dynamic fields for EF model ~ there has to be a better way

首先使用 MVC5、EF6 模型

手头的问题:我需要存储在数据库中的动态(用户创建)字段。

我今天一整天都在上网,试图找到比为动态字段编写 alter table、update 和 select 命令更好的东西。

我认为序列化数据并保存它也不是解决此问题的好方法。

你们有什么更好的想法/最佳实践想要分享吗?

一种可能的方法是使用额外的 table 作为用户定义的扩展值。因此,如果您的主 table 被称为 Customer,那么它将具有所有固定的标准列。然后,您将有一个名为 CustomerExtra 的 table,它存储每个客户行的用户定义字段。

因此,如果用户添加用户定义的字段,那么您需要为每个客户行向 CustomerExtra table 添加一行。每一行都将存储用户定义字段的名称以及值。为了使这项工作正常进行,CustomerExtra 需要您允许用户指定的每种类型的列。

这种方法的优点是您无需在添加或删除新的用户定义字段时更改数据库的架构。这确保了每个购买和使用该系统的客户的结构都是相同的,即使每个客户都设置了自己独特的用户定义字段集。

缺点是您的查询和更新更加复杂,因为需要与其他列进行交互。这也会增加性能损失,因为您查询的是两个 table 而不是一个。