Pregunta

Estoy usando linq2sql para actualizar los datos de la fila, pero una vez que cambie los valores He investigado este tema antes y encontré las siguientes razones posibles:

  • la entidad no se cambió, así que no se produce ninguna actualización
  • La entidad le falta una clave principal, pero no se produce ninguna actualización

Ninguno de estos es el caso en mi situación.

Tengo mi PK en mi clase y mesa. El GetchangeSet () del contexto de datos indica que hay al menos 1 actualización.

Los únicos problemas que veo es que desde el registro de contexto de datos es que no se genera una declaración de actualización.

¿Alguien tiene una idea de lo que podría ser el problema?

Aquí hay una muestra del código:

using(context db=new context())
{
 db.Log=new System.IO.StreamWriter(sample){AutFlush=true};
 MyObject obj=db.MyTable.SingleOrDefault(row=>Email==email);
 if(obj!=null)
 {
   obj.FirstName=firstName;
   obj.LastName=lastName;
   System.Data.Linq.ChangeSet set=db.GetChangeSet();
   db.SubmitChanges();
 }
}

¿Fue útil?

Solución 2

Encontré el problema.Para cualquier persona interesada.

Previoulsiona la lógica de validación agregada a My Datacontext CLA. Por ejemplo, si mi nombre de tabla es "Producto" agregué validación al método parcial "UpdateProduct".

Sin embargo, descuidé decirle a Linq a SQL para continuar con los cambios en la base de datos.Así que validaría entonces no hará nada porque no continué el código.

Para cualquier persona que lo necesite, para hacerlo adecuadamente, necesitaba llamar "ejecutado ejecutado" cuando pasara la lógica.

Muestra de la solución actualizada:

partial void UpdateObj(Obj instance)
{
  if(instance.Field==null)
  {
     thow new NotImplementedException();
  }
  //Added missing code continuation
  this.ExecuteDynamicUpdate(instance);
}

El blog de Scottgu me ayudó mucho ... http://weblogs.asp.net/scottgu/linq-to-sql-part-4-updating-ur-database

Otros consejos

puedes probar esto

if(obj!=null)
 {
   obj.FirstName=firstName;
   obj.LastName=lastName;
   db.MyTable.InsertOnSubmit(obj);
   db.SubmitChanges();

   System.Data.Linq.ChangeSet set = db.GetChangeSet();
 }

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