Итак, все хорошо работает с основным отображением дискриминатора. Я без проблем могу напрямую взаимодействовать с объектами A и B.
public class BaseType {}
public class EntityA : BaseType {}
public class EntityB : BaseType {}
Это отображает без драматического отображения в BaseType как
DiscriminateSubClassesOnColumn<string>("Type")
.SubClass<BaseType>("A", m => { })
.SubClass<BaseType>("B", m => { });
Проблема возникает, когда: в агрегате мы хотим отображать коллекции в каждый подкласс
Использование отображения, как показано ниже
public class AggregateMap: BaseMap<Aggregate>
{
public AggregateMap()
{
HasMany<EntityA>(x => x.ACollection).AsSet().Cascade.All();
HasMany<EntityB>(x => x.BCollection).AsSet().Cascade.All();
}
}
Эти, очевидно, arent полные сопоставления, но минимальная сумма, чтобы описать то, что я пытаюсь. Элементы, добавленные в ACollection и BCollection, сохраняются корректно через каскадирование, когда Aggregate сохраняется. Однако, когда агрегат извлекается, возникает путаница в типе дискриминации.
Я столкнулся с множеством различных возможных решений, которые я больше не знаю, что не работает. Я чувствую, что мне не нужно предоставлять предложение where, но вещи просто не работают для меня.
Любые подсказки будут оценены.