рассмотрим эти POCO:
class Foo {
int Id {get;set;}
string Name {get;set;}
}
class Bar {
int Id {get;set;}
string PropA {get;set;}
Foo PropB {get;set;}
}
Теперь я хочу добиться использования ISQLQuery
с корневой сущностью Bar
для гидратации свойства PropB.
ISQLQuery barsAround = nhSes.CreateSQLQuery("select b.Id, b.PropA, {????} from Bar b inner join Foo f on f.Id = b.FK_FooId");
barsAround.SetResultTransformer(Transformers.AliasToBean<Bar>());
IList<Bar> results = barsAround.List<Bar>();
где в {????} фрагмент, который выбирает b.Id и b.Name и гидратирует свойство PropB сущности Bar.
Я не могу использовать ISQLQuery.AddEntity()
, потому что это приводит к управляемым объектам, и я не могу использовать управляемые объекты. Полученные столбцы являются версиями столбцов, поэтому один и тот же идентификатор для каждой строки убивает движок NHibernate.