EF5 Como obter uma lista de propriedades de navegação para um objeto de domínio
Estou trabalhando em uma solução EF 5 Code-First e estou tentando atualizar uma entidade existente com uma modificada usando o padrão Repository:
public void UpdateValues(T originalEntity, T modifiedEntity)
{
_uow.Context.Entry(originalEntity).CurrentValues.SetValues(modifiedEntity);
Meu objeto de domínio simplificado se parece com isso:
public class PolicyInformation : DomainObject
{
//Non-navigation properties
public string Description {get;set;}
public bool Reinsurance {get;set;}
...
//Navigation properties
LookupListItemFormType FormType {get;set;}
...
}
O problema que tenho é que oCurrentValues.SetValues(modifiedEntity);
O método parece estar atualizando apenas propriedades de tipo escalar e complexo, mas não propriedades de Navegação. Eu vi isso acontecendo com muitas pessoas e ainda não sei por que isso acontece. No entanto, eu descobri que se eu definir essas propriedades de navegação manualmente depois de executar o meuUpdateValues
tudo funciona bem:
_policyInfoRepo.UpdateValues(existingPolicyInfo, info);
existingPolicyInfo.FormType = info.FormType;
A questão é, desde que eu uso um repositório genérico: Como posso obter uma lista de propriedades de navegação no meu objeto de domínio? Talvez através de linq, reflection, ou de qualquer outra forma, então meu método de atualização em meu repositório pode passar por eles e configurá-los automaticamente?
Algo assim:
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
}
Obrigado!