Так что все работает хорошо с основным отображением дискриминатора. Я могу напрямую взаимодействовать с объектами 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();
}
}
Это, очевидно, не полные сопоставления, но это минимальная сумма, чтобы описать то, что я пытаюсь сделать. Элементы, добавленные в ACollection и BCollection, правильно сохраняются в каскадном режиме при сохранении Aggregate. Однако при получении агрегата возникает путаница в различении типов.
Я пробежал столько разных возможных решений, что уже не знаю, что не сработало. Я чувствую, что мне не нужно предоставлять пункт where для коллекций, но у меня просто не получается.
Любые подсказки приветствуются.