Ci sono due opzioni.
Se si desidera disporre dello stesso contesto e degli oggetti candidati, è possibile semplicemente aggiungere gli oggetti candidati esistenti al lavoro. Per esempio: Create i vostri candidati e salvarli nel database:
JobsContext context = new JobsContext();
var candidate1 = new Candidate() { Name = "John Smith" }; //id 1
var candidate2 = new Candidate() { Name = "Jane Smith" }; //id 2
var candidate3 = new Candidate() { Name = "John Doe" }; //id 3
context.Candidates.Add(candidate1);
context.Candidates.Add(candidate2);
context.Candidates.Add(candidate3);
context.SaveChanges();
Quindi, creare il vostro lavoro:
var job = new Job() { Name = "Good Job" }; //id 1
Infine, aggiungere i vostri candidati per il nuovo job
variabili, aggiungere il lavoro il contesto e salva le modifiche.
job.Candidates.Add(candidate1);
job.Candidates.Add(candidate2);
context.Jobs.Add(job);
context.SaveChanges();
O
Se si utilizza un contesto diverso da quello creato i candidati con, quindi è possibile creare un nuovo oggetto candidato e collegarlo al contesto prima di aggiungere al lavoro.
//different context from above example
JobsContext newContext = new JobsContext();
//this can be a new or existing job, using the job from the example above here
var existingJob = newContext.Jobs.FirstOrDefault(j => j.Id == 1);
creare il nostro oggetto candidato impostando solo l'ID
var existingCandidate3 = new Candidate() { Id = 3 };
Fissare l'oggetto al nuovo contesto. Nota: se il contesto dell'esempio precedente è ancora in giro, non ti consente di farlo poiché sta già monitorando il candidato.
newContext.Candidates.Attach(existingCandidate3);
impostare lo stato di Invariato dal momento che non vogliamo creare un nuovo candidato, basta usare quello esistente.
newContext.Entry(existingCandidate3).State = System.Data.EntityState.Unchanged;
Aggiungere e salvare le modifiche.
existingJob.Candidates.Add(existingCandidate3);
newContext.SaveChanges();
Fatto!
Nel secondo blocco di codice, aggiungerà effettivamente nuovi record. – cbeckner
@cbeckner che ne dici se chiami 'context.Jobs.Attach (nuovo Job {Id = salesJobId});' prima? –
Questo lo farebbe. – cbeckner