У меня классическая ситуация Orders / OrderLines.
Я хотел получить некоторые заказы и нетерпеливо загрузить строки заказов с помощью внешнего соединения.
Я заметил, что если я использую QueryOver:
var orders2 = session.QueryOver<Domain.Order>()
.Where(x => x.Company == "HBP00").And(x => x.Number == "VI11001680")
.Fetch(x => x.OrderLines).Eager
.List();
Я получаю декартово произведение.
orders2 содержит 11 строк, даже если есть только один заказ, но на самом деле он имеет 11 строк заказа.
Если я использую Query:
var orders1 = session.Query<Domain.Order>()
.Where(x => x.Company == "HBP00" && x.Number == "VI11001680")
.Fetch(x => x.OrderLines)
.ToList();
все работает правильно.
Самое смешное, что я проанализировал запрос, и они идентичны.
Есть ли что-то, что я должен знать, чтобы не получить декартово произведение, охотно загружающее коллекцию с QueryOver
?