У меня есть модель Person, которая имеет отношение 1: Множество к адресу, т.е. одна запись Person может иметь много связанных записей Address.
PersonModel (усечено)
public class PersonModel : RootModel {
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int PersonID { get; set; }
AddressModel (усечено)
public class ContactAddressModel : RootModel {
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int AddressID { get; set; }
[ForeignKey("PersonID")]
public int PersonID { get; set; }
public virtual PersonModel objHuman { get; set; }
Все это прекрасно работает для извлечения, сохранения, просмотра и т. Д.
Теперь мне нужно сделать снимок записи Person и связанной с ней записи Address(s).
Я могу достаточно легко продублировать запись о личности, используя
PersonModel objRecordPerson = await _context.Persons
.Include(p => p.AddressIDs)
. AsNoTracking()
.SingleOrDefaultAsync(m => m.PersonID == PersonID);
PersonModel objSnapshot = objRecordPerson;
objSnapshot.PersonID = 0;
_context.Persons.Add(objSnapshot);
await _context.SaveChangesAsync();
Есть ли удобный способ дублировать любые связанные записи в EF CORE или это единственный вариант дублированиязапись Person, затем итерация по коллекции связанных записей Address, добавление адреса, дублирующего по одному за раз?