我最近继承了一个严重依赖于EAV数据库结构的系统,并且从性能的角度来看真的很挣扎。nhibernate/orm支持eav吗?
我想要做的是使用nhibernate或其他合适的ORM产品将这些EAV表映射到实体,以便我们可以将行映射到属性。然后我们可以重构数据库以使其成为关系数据库。有谁知道这是否可能?一个例子也将不胜感激! :)
为了给你一个感觉的结构,它看起来是这样的:
实体(ENTITYID) EntityVarchar(ENTITYID,VarcharValue) EntityFloat(ENTITYID,VarcharValue)
等。如果我有一个Customer实体,我想说Customer.Name来获取名称而不是Customer.Varchar [“Name”]。
请注意,在我们的系统中不需要使用EAV模型,我们不允许运行时更改数据结构,我认为这是一个糟糕的做法。
使用nHibernate,您可以将实体映射到类中,使其与数据库模式不是1:1映射,因此您无需将自己牢固地连接到数据库。 我只是无法看到一个方法,在映射多个行的时刻,每个属性对应一个对象。通常你会有一行包含单个对象的数据。 – spooner 2009-07-18 10:37:34