У меня похожая ситуация.Я сделал мой sql возврат плоским, чтобы все подчиненные объекты возвращались.Затем я использую Query <> для отображения полного набора.Я не уверен, насколько велики ваши наборы.
Так что-то вроде этого:
var cnn = sqlconnection();
var results = cnn.Query<AggregateRoot,Foo,Bars,FooBar,someOtherEntity,AggregateRoot>("sqlsomething"
(ar,f,b,fb,soe)=>{
ar.Foo = f;
ar.Bars = b;
ar.FooBar = fb;
ar.someotherentity = soe;
return ar;
},.....,spliton:"").FirstOrDefault();
Итак, последний объект в теге Query - это возвращаемый объект.Для SplitOn вы должны думать о возвращении как о плоском массиве, который будет работать при отображении.Вы должны выбрать первое возвращаемое значение для каждого нового объекта, чтобы новое отображение началось там.
пример:
select ID,fooid, foo1,foo2,BarName,barsomething,foobarid foobaritem1,foobaritem2 from blah
Разделителем будет "ID, fooid, BarName, foobarid".Когда он пробегает возвращаемый набор, он отобразит свойства, которые он может найти в каждом объекте.
Я надеюсь, что это поможет, и что ваш возвращаемый набор не слишком велик, чтобы возвращать плоский.