LINQ to SQL Basic insert throws: Attach or Add not new entity related exception
asp.net, c#, linq-to-sql
Solution
The issue is that the Centre object doesn't exist in the context. It's in the db, but not "in your hand" with a2. Try this:
a2.AssessmentCentre = dc.AssessmentCentres.SingleOrDefault(
d=>d.AssessmentCentreId.Equals(centreId));
The AssessmentCentre object will then exist in the context, which means there will be no problem with attaching it to a2.
Problem
I am trying to insert a record. This code worked but has stopped working I don't know why. Here is the code: ``` using (SAASDataContext dc = new SAASDataContext()) { tblAssessment a2 = new tblAssessment(); a2.AssessmentCentreId = centreId; a2.AttemptNumber = 1; dc.tblAssessments.InsertOnSubmit(a2); dc.SubmitChanges(); CurrentAssessmentId = a2.AssessmentId; } ``` The code compiles but throws the exception below on the `dc.SubmitChanges();` line. Exception thrown: An attempt has been made to Attach or Add an entity that is not new, perhaps having been loaded from another DataContext. This is not supported. Notes: `AssessmentCentreId` is a foreign key on `tblCentre`, centreId is a valid existing centre id, AssessmentCentreId and AttemptNumber are the only not null fields all other columns allow nulls. I have googled but all the results seem to pertain to people trying to attach entities pulled from other disconnected DataContext's I'm not doing that so I'm stumped. UPDATE: Adding ``` dc.DeferredLoadingEnabled = false; ``` at the top of the using block makes it work, but I'd like to know why coz I have no idea at the moment sufficiently advanced technology being indistinguishable from magic right now :)