Я хочу иметь возможность объединять дубликаты записей в 1 таблицу и обновлять все дочерние объекты, чей FK был originalRecordId, до destinyRecordId. Это можно сделать вручную, но это будет непростой задачей, поскольку родительская таблица может иметь более 40 связей, и это должно быть сделано в нескольких родительских таблицах. Я использую EF 6 с кодом в первую очередь.
Мне удалось получить все свойства навигации с помощью следующего (кредит переходит к @ zev-spits в этом вопросе):
public List<PropertyInfo> GetNavigationProperties(T entity)
{
var t = entity.GetType();
var elementType = ((IObjectContextAdapter)context).ObjectContext.CreateObjectSet<T>().EntitySet.ElementType;
return elementType.NavigationProperties.Select(np => entityType.GetProperty(np.Name)).ToList();
}
Понятия не имею, куда идти отсюда.
Есть ли способ программно выполнить эту задачу? Я хотел бы передать в originalRecord и destinyRecord, получить все связанные сущности originalRecord и обновить FK с destinyRecordId.