我最近继承了一个严重依赖 EAV 数据库结构的系统,并且从性能角度来看确实很挣扎。
我想要做的是使用 nhibernate 或其他合适的 ORM 产品将这些 EAV 表映射到实体,以便我们可以将行映射到属性。然后我们可以重构数据库以使其具有关系。有谁知道这是否可能?一个例子也将不胜感激!:)
为了让您了解结构,它看起来像这样:
实体 (EntityId) EntityVarchar (EntityId, VarcharValue) EntityFloat (EntityId, VarcharValue)
等等。如果我有一个客户实体,我想说 Customer.Name 来获取名称,而不是 Customer.Varchar["Name"]。
请注意,我们的系统不需要使用 EAV 模型,我们不允许对数据结构进行运行时更改,而且我认为无论如何这是一个不好的做法。