У меня проблема с использованием Linq для NHibernate для загрузки объекта и активной загрузки дочерней коллекции. Объекты выглядят так:
public class Order
{
public Guid Id {get; set; }
public IList<OrderLine> OrderLines {get;set;}
}
public class OrderLine
{
public Guid Id {get;set;}
public string Item {get;set;}
}
Я пытаюсь загрузить ордер с определенным идентификатором и (нетерпеливо) всеми его дочерними ордерами, используя Linq. Мой запрос выглядит так:
using (var s = _sessionFactory.OpenSession())
using (var tx = s.BeginTransaction())
{
var order = from o in s.Linq<Order>().Expand("OrderLines")
where o.Id == id
select o;
return order.First();
}
Однако, когда я отображаю порядок, свойство OrderLines
содержит только один объект - база данных определенно имеет 3. Необычно, если я делаю foreach около order
до возврата, я получаю все 3 дочерних элемента - это дважды попадает в базу данных.
Я попытался изменить запрос, чтобы использовать вместо него Single()
, но это тоже не сработало.
Что-то не так с linq? Или мое использование Expand
неверно?
Заранее спасибо,
Саймон.
Примечание: я использую FluentNHibernate Automapping для создания своего NH Mapping, и моя база данных - это база данных Sqlite (файл, а не в памяти).