我在学习EF,我在做一个练习,我得到了三个表,其中一个文件有很多文档,这些文档有很多图像。我的表格是方便(File)、Documento(Documents)和Archivos(images)。
我有一个表单,其中我在datagridview中列出了我的所有文件,如果您选择,一个已经存在的文件,那么您也应该能够向该文件中添加更多文档,问题是如果我添加要更新的代码,我无法做到这一点。如果尝试添加1个新文档,则不会将更改保存到db,也不会引发和异常,但如果尝试添加2个或更多,则会引发以下异常:
“System”类型的未处理异常。EntityFramework中发生InvalidOperationException“”。动态链接库
正在附加“Entidad”类型的实体。“Documento”失败,因为相同类型的另一个实体已具有相同的主键值。如果图形中的任何实体具有冲突的键值,则在使用“Attach”方法或将实体状态设置为“Unchanged”或“Modified”时可能会发生这种情况。这可能是因为某些实体是新的,尚未收到数据库生成的键值。在这种情况下,请使用“Add”方法或“Added”实体状态来跟踪图形,然后根据需要将非新实体的状态设置为“Unchanged”或“Modified”。
代码如下:
foreach (var documento in documentos)
{
if (documento.idDocumento == 0)
{
context.Documentos.Add(documento);
}
else
{
var entry = context.Entry(documento);
if (entry.State == EntityState.Detached || entry.State == EntityState.Modified)
{
context.Documentos.Attach(documento);
}
}
}
附加文档时显示错误。
这只是一个返回void的函数,它只用于保存,它接收一个BindingList,其中包含从db接收的所有文档和我正在添加的文档。
当做