是否可以将两个类映射到同一个属性而不共享一个公共基类?
例如,这样的情况:
class Rule
{
public virtual int SequenceNumber { get; set; }
public virtual ICondition Condition { get; set; }
}
interface ICondition
{
}
class ExpressionCondition : ICondition
{
public virtual string Expression { get; set; }
}
class ThresholdCondition : ICondition
{
public virtual int Threshold { get; set; }
}
我也无法添加两个条件继承的空抽象类,因为两个ICondition实现存在于不允许相互引用的不同域中。 (请不要回复告诉我这种情况不应该首先出现 - 我已经意识到这一点并且对我没有帮助。)
答案 0 :(得分:3)
使用FluentNHibernate
ReferencesAny(x => x.Condition)
.EntityIdentifierColumn("cond_Id")
.EntityTypeColumn("condType")
.IdentityType<int>()
.AddMetaValue<ExpressionCondition>("express")
.AddMetaValue<ThresholdCondition >("threshold");
使用xml
<any id-type="System.Int32" meta-type="System.String" name="Condition">
<meta-value value="express" class="Namespace.ExpressionCondition" />
<meta-value value="threshold" class="Namespace.ThresholdCondition" />
<column name="condType" />
<column name="cond_Id" />
</any>