Я пытаюсь создать родительский объект (Policy) с двумя дочерними сущностями (ExpressionRules и ThresholdRules), где типы дочерних объектов одинаковы и существуют в одной таблице. Например:NHibernate: Сопоставьте две коллекции на одну таблицу?
class Policy
{
ICollection<Rule> ExpressionRules { get; set; }
ICollection<Rule> ThresholdRules { get; set; }
}
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. Отображения ICondition имеют дискриминаторы, согласно которым загружается правильная реализация. Но правила в двух наборах идентичны, и я бы хотел, чтобы они отображались в одну и ту же таблицу.
Возможно ли это?
(Если добавить примеры картографирования, пожалуйста, используйте XML-отображения, если это возможно.)
Можете ли вы включить пример реализации? NHibernate не отображает через интерфейсы, поэтому трудно дать советы без конкретных примеров того, что вы пытаетесь сделать. – Fourth
Я добавил несколько бетонов, которые более похожи на пример реального мира, который я пытаюсь решить. Надеюсь, что это станет более ясным. – joniba