Звучит так, как будто вы хотите использовать Lazy, а не Include.
Include
. В метод .Include следует передавать имя свойства вашего объекта (объектов)который содержит идентификатор.
// Good:
// Note that StateId, ExtId, and MaterialId are all properties on our Coil class.
session.Query<Coil>()
.Include(c => c.StateId)
.Include(c => c.ExtId)
.Inclide(c => c.MaterialId);
// Bad:
session.Query<Coil>
.Include(c => "CoilStates/123")
.Include(c => "CoilExts/456")
.Include(c => "Materials/789")
Короче говоря, убедитесь, что вашим вызовам .Include передано имя свойств в классе Coil .Эти свойства должны содержать строковые значения, которые являются идентификаторами других документов.Затем все они будут загружены за одну поездку в базу данных.
Ленивый
Если Включить не имеет смысла для вашего сценария, но вы все равно хотите загрузить разрозненные объектыв одном вызове БД используйте lazy API
// Lazily load the coil. No DB trip yet.
var lazyCoil = session.Query<Coil>()
.Where(...)
.Lazily();
// Lazily load a CoilState. No DB trip yet.
var lazyCoilState = session.Advanced.Lazily.Load<CoilState>("CoilStates/123");
// Lazily load a Material. Still no DB trip.
var lazyMaterial = session.Advanced.Lazily.Load<Material>("Materials/456");
// Grab one of the values. This will fetch all lazy loaded items in 1 trip.
var coil = lazyCoil.Value;
// Grab the other values. No DB trip needed; they're already loaded!
var coilState = lazyCoilState.Value;
var material = lazyMaterial.Value;