validar repetidos registros registro existe evitar duplicados datos c# .net asp.net linq linq-to-sql

c# - repetidos - ¿Por qué la asociación de entidades LINQ to SQL crea una nueva fila(duplicada) cuando inserta un nuevo registro?



evitar registros duplicados sql server (3)

Estoy tratando de insertar una nueva entidad usando LINQ-to-SQL, y la entidad está asociada con una entidad de usuario. La inserción de la nueva entidad es exitosa, pero mi entidad de usuario existente se inserta como si fuera un nuevo usuario. El código se ve algo como lo siguiente:

var someEntity = new Entity(); someEntity.User = this.User; dataContextInstance.SomeEntities.InsertOnSubmit(someEntity); dataContextInstance.SubmitChanges();

¿Alguien sabe por qué el usuario se está insertando como una nueva entidad en la tabla Usuarios? Parecería que User.UserId se convertiría en el valor de la clave externa en la columna UserId de la fila asignada a la entidad que se está insertando.

Gracias por cualquier ayuda / sugerencias / comentarios


Lo siento, no lo entiendo? ¿Desea actualizar su usuario actual? ¿Para qué sirve SomeEntity?

Tiene sentido que LINQ intente insertar un nuevo usuario, porque usted le dice que lo haga. Si solo desea cambiar uno de sus usuarios, debe seleccionarlo de SomeEntities, hacer la actualización y luego llamar a SubmitChanges (LINQ reconocerá que la entidad original ha sido modificada) - sin .InsertOnSubmit.


Dado que la entidad Usuario ha sido cargada previamente por otro DataContext (que esperamos que esté dispuesto ahora), debe adjuntarlo al nuevo (actual) DataContext; de lo contrario, DataContext lo verá como una nueva Entidad y no como una existente ( que ya existe en el DB).


Asegúrese de estar utilizando la misma instancia de DataContext para ambas tablas. Vea mi pregunta aquí para (creo) una explicación más clara del problema.