我是 Entify Framework 的新手,所以这可能是一个非常基本的问题。在 WinForms 应用程序中,我有一个工作正常的数据输入页面,直到我添加一个列表框并尝试使用已做出的选择来更新数据库。
在表单上,用户选择要上传的文件并指定一个或多个可以访问该文件的部门。这是我认为它会起作用的方式:
using (var ctx = new FCEntities())
{
var batch = new Batch() { Description = txtDescription.Text, Filename = filename, Departments = (System.Data.Objects.DataClasses.EntityCollection<Department>)lstDepartments.SelectedItems };
ctx.AddToBatches(batch);
ctx.SaveChanges();
}
但是当这不起作用时,我做了一些研究并了解到我无法将 SelectedItems 转换为 EntityCollection,因此我决定将原始集合中的项目复制到新集合中,然后按如下方式使用新集合:
using (var ctx = new FCEntities())
{
var departments = new System.Data.Objects.DataClasses.EntityCollection<Department>();
foreach (var department in lstDepartments.SelectedItems)
{
departments.Add((Department)department);
}
var batch = new Batch() {Description = txtDescription.Text, Filename = filename, Departments=departments };
ctx.AddToBatches(batch);
ctx.SaveChanges();
}
这也不起作用,并在部门上给出了这个错误。添加行:
“无法将附加到 ObjectContext 的对象添加到不与源对象关联的 EntityCollection 或 EntityReference 中。”
我不明白,因为在我看来,部门对象没有附加到 ObjectContext?我显然缺少一些基本的东西,所以任何建议和/或其他人如何做到这一点的例子的链接都将不胜感激。