Pregunta

¿Puede alguien apuntarme en la dirección correcta para manejar un error de conflicto PK en c # .net usando Sync Framework?

Estoy intentando sincronizar entre el servidor SQL 2008 y la base de datos de caché de datos local (.sdf) y me gustaría mantener AMBAS filas que están en conflicto tanto en el servidor como en el cliente y NO permitir que el servidor o el cliente ganen.

Recibo un error de conflicto pk cuando inserto una nueva fila tanto en el servidor como en el cliente que tienen el mismo ID de PK.

Cualquier sugerencia sería agradecida.

Gracias

¿Fue útil?

Solución 2

Esto se resuelve utilizando un GUID para la PK en lugar de un int de incremento automático.

Esto garantiza que cada fila insertada por el servidor o cualquier cliente será única y funcionará muy bien.

Existen algunas desventajas, como el espacio de almacenamiento adicional y el tiempo de búsqueda, etc. pero esto es algo con lo que estoy dispuesto a vivir (y filtraré los datos que obtenga el cliente, lo que ayudará a mejorar el rendimiento).

Gracias a todos por su ayuda.

Otros consejos

El principio general para este tipo de problema es tener una columna para una clave natural. La idea es que la clave principal identifique de forma única una fila en una tabla, mientras que la clave natural identifica de forma única un objeto que la fila describe. En caso de conflicto, deje que el servidor gane e inserte una nueva fila en el lado del cliente. Se emitirá un nuevo PK, pero la clave natural permanece igual. Más tarde, es fácil encontrar esas filas ordenando por la clave natural.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top