EF5 Как получить список свойств навигации для объекта домена
Я работаю над решением EF 5 Code-First и пытаюсь обновить существующую сущность модифицированной, используя шаблон Repository:
public void UpdateValues(T originalEntity, T modifiedEntity)
{
_uow.Context.Entry(originalEntity).CurrentValues.SetValues(modifiedEntity);
Мой упрощенный объект домена выглядит так:
public class PolicyInformation : DomainObject
{
//Non-navigation properties
public string Description {get;set;}
public bool Reinsurance {get;set;}
...
//Navigation properties
LookupListItemFormType FormType {get;set;}
...
}
У меня проблема в том, чтоCurrentValues.SetValues(modifiedEntity);
Кажется, что метод обновляет только свойства скалярного и сложного типа, но не свойства Navigation. Я видел, как это происходит со многими людьми, и до сих пор не знаю, почему это так. Тем не менее, я понял, что если я установлю эти свойства навигации вручную после выполнения моегоUpdateValues
все отлично работает
_policyInfoRepo.UpdateValues(existingPolicyInfo, info);
existingPolicyInfo.FormType = info.FormType;
Вопрос в том, что я использую общий репозиторий: как я могу получить список свойств навигации в моем доменном объекте? Возможно, через linq, рефлексию или любым другим способом, чтобы мой метод обновления в моем репозитории мог проходить через них и устанавливать их автоматически?
Что-то вроде этого:
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
}
Спасибо!