Как выполнить итерацию по связанным сущностям каждого базового объекта Entity Framework?

#c# #entity-framework #entity-framework-core #linq-to-entities

Вопрос:

Я пытаюсь скопировать родительский объект и добавить его в свою базу данных. Для этого я обновляю родительский объект новым первичным ключом, но также хочу обновить этот первичный ключ, который отражается как внешний ключ в связанных с ним объектах, и первичные ключи каждого из этих связанных объектов.

Я могу обновить первичный ключ родительского объекта, но есть ли способ эффективно перебирать каждый связанный объект, чтобы также изменить соответствующие поля, чтобы я мог успешно сохранить эти данные в своей базе данных?

Я включил код, в котором я могу обновить свой исходный родительский объект как новый объект.

 originalObject.Entry(originalProject).State = EntityState.Detached;
if (originalObject.GetType().GetProperty("Id") != null)
{
    var key = Guid.NewGuid().ToString();
    // OriginalId represents the foreign key that maps to the originalObject
    originalProject.GetType().GetProperty("OriginalId").SetValue(originalProject, key);
}
db.AddAsync(originalObject);
db.SaveChanges();