Это зависит от внутренней реализации AutoMapper. Я бы предположил, что AutoMapper не пытается получить доступ к свойствам навигации объекта (в этом случае запускается отложенная загрузка и дополнительный запрос к базе данных). Я не вижу причины, почему AutoMapper должен делать это, если вы отображаете только скалярные свойства. Но кто знает ...
Если вы хотите быть в безопасности, вы можете временно отключить отложенную загрузку:
try
{
_readOnlyDb.ContextOptions.LazyLoadingEnabled = false;
var simplepocoforentity = Mapper.Map(_readOnlyDb.Entities
.Single(x => x.Id == Id), new SimplPocoForEntity());
// ...
}
finally
{
_readOnlyDb.ContextOptions.LazyLoadingEnabled = true;
}
В качестве примечания: знайте, что вы загружаете всю сущность в контекст с помощью этого подхода. После этого происходит сопоставление. Потенциально вы загружаете из базы данных больше столбцов, чем вам действительно нужно (возможно, не в вашем особом случае здесь). В общем, я бы сделал отображение с проекцией, которая гарантирует, что база данных запрашивает только те столбцы, которые необходимы:
var simplepocoforentity = _readOnlyDb.Entities
.Where(e => e.Id == Id)
.Select(e => new SimplPocoForEntity
{
PocoProperty1 = e.EntityProperty1,
PocoProperty2 = e.EntityProperty2,
PocoProperty3 = e.EntityProperty3
// etc.
})
.Single();
При таком подходе ленивая загрузка вообще не происходит, потому что вы загружаете не сущность, а непосредственно PocoForEntity из базы данных.