Вам не нужно беспокоиться о том, какое значение получит идентификатор 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
}
Таким образом, вы всегда можете получить непосредственный доступ к родителю Ребенка, без необходимости извлекать его явно из базы данных самостоятельно (он будет загружен лениво).