EF5 Cómo obtener una lista de propiedades de navegación para un objeto de dominio

Estoy trabajando en una solución de EF 5 Code-First y trato de actualizar una entidad existente con una modificada utilizando el patrón Repository:

    public void UpdateValues(T originalEntity, T modifiedEntity)
    {
        _uow.Context.Entry(originalEntity).CurrentValues.SetValues(modifiedEntity);

Mi objeto de dominio simplificado se ve así:

public class PolicyInformation : DomainObject
{
     //Non-navigation properties
     public string Description {get;set;}
     public bool Reinsurance {get;set;}
     ...
     //Navigation properties
     LookupListItemFormType FormType {get;set;}
     ...
}

El problema que tengo es que laCurrentValues.SetValues(modifiedEntity); El método parece estar actualizando solo las propiedades de tipo escalar y complejo, pero no las propiedades de navegación. He visto que esto le pasa a mucha gente y todavía no sé por qué es eso. Sin embargo, me di cuenta de que si configuraba esas propiedades de navegación manualmente después de ejecutar miUpdateValues todo funciona bien

            _policyInfoRepo.UpdateValues(existingPolicyInfo, info);
            existingPolicyInfo.FormType = info.FormType;

La pregunta es, ya que uso un repositorio genérico: ¿Cómo puedo obtener una lista de propiedades de navegación en mi objeto de dominio? ¿Tal vez a través de linq, la reflexión o cualquier otra forma para que mi método de actualización en mi repositorio pueda recorrerlos y establecerlos automáticamente?

Algo como esto:

    public void UpdateValues(T originalEntity, T modifiedEntity)
    {
        //Set non-nav props
        _uow.Context.Entry(originalEntity).CurrentValues.SetValues(modifiedEntity);
        //Set nav props
        var navProps = GetNavigationProperties(originalEntity);
        foreach(var navProp in navProps)
        {
           //Set originalEntity prop value to modifiedEntity value
        }

¡Gracias!

Respuestas a la pregunta(4)

Su respuesta a la pregunta