2
我正在使用WCF數據服務,它對大多數事情都很好,但我很難弄清楚如何更新具有相關實體集合的實體。例如,在下面的代碼中,我有一個包含相關部門的Batch對象。在我的數據庫中,這表示爲三個表格 - 批次,部門和批次_部門。 EF將此作爲帶有Departments導航屬性的批對象公開給我看。使用WCF數據服務保存對象及其相關對象
在下面列出的代碼中,創建了Batch對象並填充了Departments集合,但是當我調用SaveChanges時,只有Batch對象在數據庫中創建。部門被忽略。如果我在SaveChanges行上設置斷點,我可以驗證Departments集合是否已填充。
private void Save()
{
var batch = new DataService.Batch() { Description = txtDescription.Text, Filename = txtFilename.Text };
foreach (var department in lstDepartments.CheckedItems)
{
var dept = _ctx.Departments
.Select(d => d)
.Where(d => d.DepartmentID == ((DataService.Department)department).DepartmentID)
.First();
batch.Departments.Add(dept);
}
_ctx.AddToBatches(batch);
_ctx.SaveChanges();
}
我敢肯定,我失去了一些東西很明顯,但我似乎無法找到它。任何幫助將不勝感激。
感謝您的回覆。我早些時候嘗試過,但收到一條消息,說「上下文目前不在跟蹤實體。」由於你的帖子證實這種方法是正確的,我挖了一點,發現我需要在foreach之前移動_ctx.AddToBatchs(batch)。 (我之前認爲它是未被跟蹤的部門對象)。在完成此操作並在foreach主體內添加AddLink行後,它按照我的預期工作。再次感謝。 – DarLom