У нас была аналогичная проблема, когда класс сущности добавлен в коллекцию в другом классе без заданных свойств навигации, и это хранилище в общем DbContext.
Мы решили отделить объект от контекста, а затем повторный запрос в Дб, если нам нужно перезагрузить навигационные свойства (как эти решения: Force reload of entity in Entity Framework after insert/add и http://dev-doc.blogspot.co.uk/2015/09/entity-framework-reload-newly-created.html)
Вот пример кода, который мы использовали:
public class EntityRetriever
{
private readonly System.Data.Entity.DbContext _context;
public EntityRetriever(System.Data.Entity.DbContext context)
{
_context = context;
}
public T RetrieveEntity<T>(params object[] entityKeyValues) where T : class
{
var entity = _context.Set<T>().Find(entityKeyValues);
//check if is not an EF proxy class or has changed
if (entity != null
&& !IsProxy(entity)
&& _context.Entry(entity).State == System.Data.Entity.EntityState.Unchanged)
{
//This is the important part to reload navigation properties:
//detach entity from context and reload from db
_context.Entry(entity).State = System.Data.Entity.EntityState.Detached;
entity = _context.Set<T>().Find(entityKeyValues);
}
return entity;
}
public static bool IsProxy(object entityObject)
{
return entityObject != null &&
System.Data.Entity.Core.Objects
.ObjectContext.GetObjectType(entityObject.GetType()) != entityObject.GetType();
}
}