Este artículo es un artículo espejo de traducción automática, por favor haga clic aquí para saltar al artículo original.

Vista: 49435|Respuesta: 1

[Fuente] Las entidades EF de tipo append "XXXX" fallan porque otras...

[Copiar enlace]
Publicado en 12/5/2021 9:43:53 | | |
EF añade una entidad de tipo "XXXX" que falla porque otra entidad del mismo tipo ya tiene el mismo valor de clave primaria. Al usar el método "Adjuntar" o al configurar el estado de la entidad en "Sin cambios" o "Modificado"

Porque otras entidades del mismo tipo ya tienen el mismo valor clave primario. Este comportamiento puede ocurrir al usar el método "Attach" o al establecer el estado de una entidad en "Sin cambios" o "Modificada" si alguna entidad en el dibujo tiene un valor clave en conflicto
Esto puede deberse a que algunas entidades son nuevas y aún no han recibido una clave-valor generada por la base de datos (nueva entidad), en cuyo caso el grafo se rastrea usando el método "Añadir" o el estado de la entidad "Añadido", y luego el estado de la entidad no nueva se establece en "Sin cambios" o "Modificado" en consecuencia.
De hecho, este error es que cuando EF abre una transacción, ya hay un dato con la misma clave primaria en el contexto de EF, y personalmente me encuentro con este problema en varias situaciones:

Situación 1:

Modificando, iterando a través de los mismos datos en una tabla (por ejemplo, iterando la cantidad de inventario del mismo artículo), este caso debería ser la primera vez que la caché de contexto no se borra

El código es el siguiente:


El bucle aquí no reporta un error la primera vez, y la segunda vez será un error

Solución:


Situación 2:

La operación de bucle primero añade un dato y luego modifica los datos

El código es el siguiente:


También se reportan errores aquí, especialmente para nuevos EF o nuevas entidades

Solución:








Anterior:Prueba de rendimiento Redis Benchmark
Próximo:ASP.NET Explicación detallada del middleware Middleware de Core (9).
Publicado en 22/9/2021 20:55:57 |
Aprende a aprender...
Renuncia:
Todo el software, materiales de programación o artículos publicados por Code Farmer Network son únicamente para fines de aprendizaje e investigación; El contenido anterior no se utilizará con fines comerciales o ilegales; de lo contrario, los usuarios asumirán todas las consecuencias. La información de este sitio proviene de Internet, y las disputas de derechos de autor no tienen nada que ver con este sitio. Debes eliminar completamente el contenido anterior de tu ordenador en un plazo de 24 horas desde la descarga. Si te gusta el programa, por favor apoya el software genuino, compra el registro y obtén mejores servicios genuinos. Si hay alguna infracción, por favor contáctanos por correo electrónico.

Mail To:help@itsvse.com