Ответ 1
Вам не следует беспокоиться о том, какое значение получит идентификатор Parent
, чтобы вставить строки Child
. Этого должно быть достаточно:
var parent = new Parent
{
// fill other properties
Children = new List<Child>()
}
parent.Children.add(new Child { /*fill values */);
dbContext.Parents.Add(parent); // whatever your context is named
dbContext.SaveChanges();
Для записи идентификатор будет назначен после вызова SaveChanges()
, поэтому, если вам действительно нужен идентификатор перед вставкой объекта Child
, вы всегда можете дважды вызвать SaveChanges()
.
Опять же, это не обязательно, но.
Кстати, я бы рекомендовал сделать свойство Foreign Key от Child
до Parent
навигационным свойством, поэтому класс Child
будет выглядеть так:
class Child
{
public int ChildId { get; set; } // identity column
public string ChildName { get; set; }
public virtual Parent Parent { get ; set; } //foreign key to Parent
}
Таким образом, вы всегда можете напрямую обращаться к родительскому элементу Child, не загружая его непосредственно из базы данных (это будет лениво загружено).