我正在使用 WCF 数据服务,它适用于大多数事情,但我无法弄清楚如何更新具有相关实体集合的实体。例如,在下面的代码中,我有一个具有相关部门的 Batch 对象。在我的数据库中,这表示为三个表 - Batches、Departments 和 Batches_Departments。EF 将此作为具有 Departments 导航属性的 Batch 对象公开给我。
在下面列出的代码中,创建了 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();
}
我确定我遗漏了一些明显的东西,但我似乎找不到它。任何帮助将不胜感激。