EF5 So rufen Sie eine Liste der Navigationseigenschaften für ein Domänenobjekt ab
Ich arbeite an einer EF 5 Code-First-Lösung und versuche, eine vorhandene Entität mithilfe des Repository-Musters durch eine geänderte zu aktualisieren:
public void UpdateValues(T originalEntity, T modifiedEntity)
{
_uow.Context.Entry(originalEntity).CurrentValues.SetValues(modifiedEntity);
Mein vereinfachtes Domain-Objekt sieht folgendermaßen aus:
public class PolicyInformation : DomainObject
{
//Non-navigation properties
public string Description {get;set;}
public bool Reinsurance {get;set;}
...
//Navigation properties
LookupListItemFormType FormType {get;set;}
...
}
Das Problem, das ich habe, ist dasCurrentValues.SetValues(modifiedEntity);
Diese Methode scheint nur skalare und komplexe Typeneigenschaften zu aktualisieren, aber keine Navigationseigenschaften. Ich habe das bei vielen Leuten gesehen und weiß immer noch nicht, warum das so ist. Ich habe jedoch herausgefunden, dass, wenn ich diese Navigationseigenschaften nach der Ausführung von my manuell einstelleUpdateValues
alles funktioniert gut:
_policyInfoRepo.UpdateValues(existingPolicyInfo, info);
existingPolicyInfo.FormType = info.FormType;
Die Frage ist, da ich ein generisches Repository verwende: Wie kann ich eine Liste der Navigationseigenschaften in meinem Domänenobjekt abrufen? Vielleicht über linq, reflection oder auf andere Weise, damit meine Aktualisierungsmethode in meinem Repository sie durchlaufen und automatisch einstellen kann?
Etwas wie das:
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
}
Vielen Dank!