Insert record in child table when parent record already exists using Entity Framework code first

Viewed 9323

I have some Parent records already inserted in the database. Now i want to add some child records. To do this I followed following steps:

  1. Retrieve the Parent(A) records
  2. Create a new child(B) record
  3. Add parent record to the Navigation property of Child. B.A = A
  4. Call SaveChanges.

The problem is when i do this EF inserts a New Parent and then add the child with a foreign key pointing to new newly inserted parent instead of inserting just the child with mapping to already existing parent. I also checked the parent's primary key when saving the child and it does exists in the database.

Note that i am using database generated identity for Parent and Child. One thing i noticed was if I add/Save Parent and Child from the same context object then it works fine.

Need to fix this asap. Any help will be greatly appreciated.

3 Answers

The below code worked for this situation.

networkDbo.Form.Id = forms.Id; // <-- AGAIN assigning FK  // Form is Parent Table 
this.dbContext.Form.Attach(formsdbo);  // Attach the parent value to db Context
this.dbContext.Network.Attach(networkDbo); // network is Child 
this.dbContext.Entry(networkDbo).State = EntityState.Added;  // Entity State is Added.
this.dbContext.SaveChanges();  // Save the Db context.
Related