有兩種選擇。
如果您將要放置相同的上下文和候選對象,可以簡單地將現有的候選對象添加到作業中。 例如: 創建您的候選人,並將其保存到數據庫中:
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();
然後,創建你的工作:
var job = new Job() { Name = "Good Job" }; //id 1
最後,您的考生加入到新job
變量,就業增加上下文並保存更改。
job.Candidates.Add(candidate1);
job.Candidates.Add(candidate2);
context.Jobs.Add(job);
context.SaveChanges();
OR
如果使用的是從你創建的候選人一個不同的環境,那麼你可以創建一個新的候選對象,並在它之前增加了其附加到上下文工作。
//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);
通過設置僅的ID
var existingCandidate3 = new Candidate() { Id = 3 };
連接對象到新的環境中創建我們的候選對象。 注意:如果上述示例的上下文仍然存在,它不會讓您這樣做,因爲它已經在跟蹤候選人了。
newContext.Candidates.Attach(existingCandidate3);
設置狀態不變,因爲我們不希望創建一個新的候選人,只是利用現有的一個。
newContext.Entry(existingCandidate3).State = System.Data.EntityState.Unchanged;
添加並保存更改。
existingJob.Candidates.Add(existingCandidate3);
newContext.SaveChanges();
完成!
在第二個代碼塊中,它實際上會添加新記錄。 – cbeckner
@cbeckner如果你調用'context.Jobs.Attach(new Job {Id = salesJobId});'first? –
這會做到這一點。 – cbeckner