Tengo algunos registros principales ya insertados en la base de datos. Ahora quiero agregar algunos registros secundarios. Para ello he seguido siguientes pasos:Insertar registro en la tabla secundaria cuando el registro principal ya existe utilizando el código de Entity Framework primero
- recuperar los Padres (A) registra
- crear un nuevo registro hijo (B)
- Añadir registro padre a la propiedad de navegación del Niño. B.A = A
- Llamar SaveChanges.
El problema es cuando hago esto. EF inserta una nueva matriz y luego agrega el elemento secundario con una clave externa que apunta al nuevo elemento primario recién insertado en lugar de insertar solo el elemento secundario con la asignación al elemento primario existente. También verifiqué la clave primaria de los padres al guardar al niño y existe en la base de datos.
Tenga en cuenta que estoy utilizando la identidad generada en la base de datos para padres y secundarios. Una cosa que noté fue si agregué/Save Parent y Child del mismo objeto de contexto, entonces funciona bien.
Necesitan solucionarlo lo antes posible. Cualquier ayuda será apreciada.
El segundo enfoque funcionó para mí. Muchas gracias. – Amit
Tiene el mismo problema. ¿Puedes echar un vistazo a: http://stackoverflow.com/questions/16131090/the-relationship-could-not-be-changed-the-foreign-key-properties-is-non-nulla/16131494?noredirect= 1 # comment23046042_16131494? Obtengo 'MamConfiguration_V1' en el contexto exacto en el que guardo los cambios. Está unido al mismo contexto. El flujo: obtener MamConfiguration_V1 con Id que obtuve en la interfaz de usuario (modo de edición) -> asignarle todos los valores desde la interfaz de usuario -> anular \ agregar \ eliminar miembros de referencia (navegación) 'MamConfigurationToBrowser_V1'. ¿Eso agregó información? –
+1 Todos los días aprendo algo nuevo y esta es de lejos la mejor explicación para este problema que he visto. ¡Gracias! –