C# 使用NHibernate将行透视到属性/列中

C# 使用NHibernate将行透视到属性/列中,c#,.net,nhibernate,fluent-nhibernate,nhibernate-mapping,C#,.net,Nhibernate,Fluent Nhibernate,Nhibernate Mapping,使用NHibernate将下面的表结构建模到下面的“数据透视”域模型中的最佳方法是什么 映射属性是平凡的;它实际上是我不确定的从行到属性/虚拟列的轴心 数据库结构 属性表 Id Name Type Attr1 Some Attribute 1 Bool Attr2 Some Attribute 2 Bool Attr3 Some Attribute 3 Bool Id AdId AttributeId Value 1

使用NHibernate将下面的表结构建模到下面的“数据透视”域模型中的最佳方法是什么

映射属性是平凡的;它实际上是我不确定的从行到属性/虚拟列的轴心

数据库结构 属性表

Id      Name                Type
Attr1   Some Attribute 1    Bool
Attr2   Some Attribute 2    Bool
Attr3   Some Attribute 3    Bool
Id    AdId  AttributeId Value
100   Ad1   Attr1       true
101   Ad1   Attr2       false
102   Ad1   Attr3       true
广告台

Id  Name
Ad1 Some ad 1
属性表

Id      Name                Type
Attr1   Some Attribute 1    Bool
Attr2   Some Attribute 2    Bool
Attr3   Some Attribute 3    Bool
Id    AdId  AttributeId Value
100   Ad1   Attr1       true
101   Ad1   Attr2       false
102   Ad1   Attr3       true
所需的NHibernate对象模型 表结构不是一成不变的,但目标是属性不作为列存储在广告上。不同的广告类型将有不同的属性,但它们不会动态变化,即广告类型1将始终有10个属性,广告类型2将始终有5个属性,等等


首选原始NHibernate HBM答案,但流畅的映射是可以的

最终我们决定使用不同的设计来消除这种不必要的复杂性


Firo关于NHibernate的IDictionary支持的观点是一个很好的观点,但是很可能是解决方案

您是否考虑过
IDictionary
?NHibernate可以将对象序列化为2列,但我从未尝试过我认为这可能是我必须遵循的路线,但我不确定它是否能与上面的结构一起工作。当每个adtype的属性都已修复时,为什么不为每个adtype创建一个表来保存特定的属性?(每个类继承的表)