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!