He hecho esto muchas veces y no ha funcionado.

Cada ejemplo que he encontrado es exactamente lo que tengo..

Hago mi consulta…

var result = from u in tdc.tblUsers
             where u.UserID == userID
             select u;

y luego me cambie los valores que desee:

foreach (tblUsers u in result)
{
     //change values (and no im not changing the primary key or foreign keys)
}

a continuación, presento los cambios

tdc.SubmitChanges();

También he probado de esta manera antes y tiene el mismo error

tblUsers result = (from u in tdc.tblUsers
                   where u.UserID == userID
                   select u).Single();
result.Address = address;
result.Phone = phone;
tdc.SubmitChanges();

Es sólo recuperar 1 registro con esta consulta ya que UserID es la clave principal.

Cuando llega a presentar los cambios, se lanza la excepción de que la fila no se ha encontrado o se ha cambiado. Soy la única persona que esta utilizando de modo que no hay otros conflictos con el acceso a la base de datos o de bloqueo. ¿Por qué iba a tirar la ChangeConflictException? Me han dado un paso adelante con depurador y los datos que persiste a través de todo el proceso, incluyendo los cambios que estoy tratando de hacer.

Es usted el uso de Entity Framework (y si es así, qué versión)?
También, no TODAS las tablas tienen claves primarias. Esto incluye el que se está editando, y cualquier ramificación de las tablas de claves foráneas.
Usted está recibiendo este error, posiblemente, debido a que uno de los campos tiene algo diferente en el Linq To SQL designer y en la base de datos real.
.NET Framework 4, y sí, todas las tablas tienen Claves Primarias y adecuada claves foráneas. Esta consulta sólo se va después de la 1 de la tabla, y que la tabla no tiene ningún claves foráneas. Es uno de mis tablas base.
Cualquier razón que usted está usando SubmitChanges en lugar de SaveChanges? También, ¿qué versión de la Entidad marco estás usando?

OriginalEl autor Andy Link | 2013-05-04

2 Comentarios

  1. 3

    Tal vez usted trabaja con un contexto diferente? Intenta encapsular con el uso.

    como este

    using (myContext ctx = new myContext())
    {
        var user = ctx.users.first();  
        user.name="blah";
        ctx.SubmitChanges();
    }

    OriginalEl autor Sascha

  2. 0

    Muy a menudo, si usted mira en el real de SQL que Linq to SQL genera, verás que es muy entusiastas con la coincidencia de la fila de base de datos que inicialmente recuperados. Supongamos que tenemos una tabla con las columnas ID(PK), a, B, C. Se podría pensar que si se actualiza la columna C para una fila, debe ser suficiente para actualizar la fila con un juego de clave principal. Pero lo que a menudo sucede es que Linq to SQL es también tratando de coincidir en las columnas a y B así. Normalmente, eso está bien. A menos que usted tenga concurrente escribe, ya sea de multi-threading o multi-procesos, y algo más modifica la columna a o B para el registro que está intentando actualizar. Luego de obtener estos Sistema.De datos.Linq.ChangeConflictException: Fila no se encuentra o cambiado. errores al llamar SubmitChanges() en el contexto de los datos.

    OriginalEl autor EricRRichards

Dejar respuesta

Please enter your comment!
Please enter your name here