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!