Este error se genera cuando trato de cambiar una clave externa. Sé que este es un error muy común. He encontrado toneladas de información al respecto e intenté implementar las correcciones que encontré, pero sigo teniendo este error al intentar actualizar las claves. Reference ThreadLINQ to SQL ForeignKeyReferenceAlreadyHasValueException error
Originalmente estaba asignando directamente el valor y no tratando de mapear las entidades.
ticket.assigned_to_group = assigned_to
He cambiado desde entonces para tratar de mapear las entidades que creo que la respuesta es correcta; sin embargo, sigo recibiendo el error.
ticket.assigned_to_group = db.sub_units.Single(f => f.id == assigned_to).id;
Alguna idea de por qué esto no funcionaría. Además, si tengo una tabla con varias claves foráneas, ¿realmente necesito hacer una nueva consulta para cada clave o hay una forma mejor?
Ah, usted está en lo cierto. Todavía estaba tratando de asignarle a la ID un nuevo valor en lugar de asignarle la entidad. Esto ahora funciona: t.sub_unit = db.sub_units.Single (f => f.id == assigned_to) – Tim
Esto (en mi caso) es solo un problema cuando el Id no puede contener nulos, actualizando los ID nulos mediante la asignación de solo una nueva identificación funciona bien. ¿Por qué es este el caso? – CRice
No debe asignar ParentId. La única tarea necesaria es la entidad. –