Во-первых, мой UoW наследуется от DbContext.
Я перешел на использование Unity.Mvc3 и добавил эту строку в свои регистрации:
Container.RegisterType<IUnitOfWork, UnitOfWork>(new HierarchicalLifetimeManager());
Как только я перешел к этому, моя ленивая загрузка для Entity Framework, похоже, перестала работать. Вот пример:
public class Process
{
public Guid Id {get;set;}
public virtual Guid? StatusId {get;set;} //this is the FK EF uses.
public virtual Status Status {get;set;}
}
public class Status
{
public Guid ID {get;set;}
public Name {get;set;}
}
//DTOs
public class ProcessDto
{
public Guid Id {get;set;}
public Guid? StatusId {get;set;} //this is the FK EF uses.
public StatusDto Status {get;set;}
}
public class StatusDto
{
public Guid ID {get;set;}
public Name {get;set;}
}
Сатусы загружаются в контексте, прежде чем мы вызываем Cre
//Process Service
public ProcessDto Create(ProcessDto dto)
{
var processEntity = new Process(){StatusId = dto.StatusId}
processRepository.Add(processEntity)
unitOfWork.Commit()
//at this point, before using Unity.Mvc3 the Status would be proxied into the processEntity. Moving to Unity.Mvc3 it is like Lazy Loading stopped working.
return Mapper.Map<Process,ProcessDto>(processEntity);
}
При пошаговом выполнении кода запрос не прерывается до окончания вызова Create. Не уверен, что кто-то сталкивался с чем-то подобным.