EF5 Jak uzyskać listę właściwości nawigacyjnych dla obiektu domeny

Pracuję nad rozwiązaniem EF 5 Code-First i próbuję zaktualizować istniejący obiekt za pomocą zmodyfikowanego, używając wzorca Repository:

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

Mój uproszczony obiekt domeny wygląda tak:

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

Mam problem z tym, żeCurrentValues.SetValues(modifiedEntity); metoda wydaje się aktualizować tylko właściwości typu skalarnego i złożonego, ale nie właściwości nawigacji. Widziałem to dzieje się u wielu ludzi i nadal nie wiem, dlaczego tak jest. Zorientowałem się jednak, że jeśli ustawię te właściwości nawigacji ręcznie po wykonaniu myUpdateValues wszystko dziala:

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

Pytanie brzmi, ponieważ używam ogólnego repozytorium: Jak mogę uzyskać listę właściwości nawigacji w moim obiekcie domeny? Być może za pośrednictwem linq, refleksji lub w inny sposób, więc moja metoda aktualizacji w moim repozytorium może przechodzić przez nie i ustawiać je automatycznie?

Coś takiego:

    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
        }

Dzięki!

questionAnswers(4)

yourAnswerToTheQuestion