У меня есть простой запрос Nhibernate Linq, который возвращает больше результатов, чем ожидалось:
var result = (from foo in session.Linq<Foo>()
where foo.High.ID == High.ID
select foo).ToArray();
Фу выглядит так:
public class Foo : DomainLayerSuperType
{
// ...other members omitted for clarity
protected IList<Bar> associatedBars;
}
Моя проблема в том, что я получаю дубликат Foo для каждого бара в коллекции 'relatedBars'. Поэтому, если в коллекции имеется 20 столбцов для экземпляра Foo, я получу 20 экземпляров Foo, каждый из которых содержит 20 столбцов.
Отображение для Foo: (FluentNhibernate)
//other mappings omitted
HasMany<Bar>(x => x.AssociatedBars)
.Access.CamelCaseField()
.AsBag()
.Table("dbo.Bar")
.KeyColumn("FooID")
.Cascade.AllDeleteOrphan()
.Inverse()
.Fetch.Join(); //eager load
Когда я выполняю этот эквивалентный запрос Hql, проблема не возникает:
var query = new StringBuilder();
query.AppendFormat("select foo from Foo foo where foo.High.ID = {0}", High.ID);
var result = session.CreateQuery(query.ToString()).List<Foo>().ToArray();
Кроме того, когда я меняю отображение для Foo, чтобы использовать отложенную загрузку для AssociatedBars, проблема не возникает.
Есть идеи? Кроме того, где лучший форум для Nh Linq? Я не смог найти ни одного такого поста здесь!