使用NHibernate将以下表格结构建模到下面的'pivoted'域模型中的最佳方法是什么?
映射属性是微不足道的;它确实是我不确定的属性/虚拟列的行的枢轴。
属性表
Id Name Type
Attr1 Some Attribute 1 Bool
Attr2 Some Attribute 2 Bool
Attr3 Some Attribute 3 Bool
广告表
Id Name
Ad1 Some ad 1
AdAttributes表
Id AdId AttributeId Value
100 Ad1 Attr1 true
101 Ad1 Attr2 false
102 Ad1 Attr3 true
class Attribute{
public int Id {get;set;}
public Type TheType {get;set;}
public string Name {get;set;}
}
class AdAttribute{
public int Id{get;set;}
public Ad Ad{get;set;}
public Attribute Attribute{get;set;}
public bool Value{get;set;}
}
class Ad{
...
class Attributes{
public AdAttribute Attr1{get;set;}
public AdAttribute Attr2{get;set;}
public AdAttribute Attr3{get;set;}
}
Attributes TheAttributes{get; protected set;}
}
表格结构并非一成不变,但目标是不将属性存储为广告中的列。不同的广告类型将具有不同的属性,但它们不会动态更改,即广告类型1将始终具有10个属性,广告类型2将始终具有5个属性等。
原始NHibernate HBM答案首选,但Fluent映射正常
答案 0 :(得分:0)
最终,我们决定使用不同的设计来消除这种不必要的复杂性。
Firo关于NHibernate的IDictionary支持的观点很好,但很可能是解决方案