2009-02-03 20 views
15

Ho il seguente codice:Linq - non fila trovato o cambiato

 Guid id = imageMetaData.ID; 

     Data.LinqToSQL.Image dbImage = DBContext.Images.Where(x => x.ID == id).SingleOrDefault(); 

     dbImage.width = imageMetaData.Width; 
     dbImage.height = imageMetaData.Height; 

     DBContext.SubmitChanges(); 

Guardando SQL Profiler, il seguente SQL viene generato:

exec sp_executesql N'UPDATE [dbo].[Images] 
SET [height] = @p0, [width] = @p1 
WHERE 0 = 1',N'@p0 int,@p1 int',@p0=603,@p1=365 

Perché il cui affermazione non include una "dove id = ...." ???

Cosa sto sbagliando?

La mia applicazione genera un ChangeConflictException con il messaggio ... "Riga non trovato o cambiato"

+0

Avremmo bisogno di vedere il codice prima di ... come/quando il vostro datacontext è stato istanziato? Dove viene impostato imageMetaData.ID? –

+2

Hai trigger su questo tavolo? – BFree

risposta

38

Controllare per assicurarsi che il modello corrisponda al DB. Ho incontrato questo se non sono sincronizzati, nella maggior parte dei casi il flag nullable. Dai un'occhiata a questo article per una possibile causa.

Presumo che si stia utilizzando la versione di rilascio di .net 3.5 (Visual Studio 2008).

+2

Grazie, era solo un semplice problema non impostato. Deve avere un modo migliore per mantenere i db in sincronia! –

+0

Se lo schema è semplice, prendere in considerazione la creazione dello schema DB dal DBML. Questo rende il DBML fonte di verità. –

1

trovato la soluzione in: http://social.msdn.microsoft.com/Forums/en-US/linqprojectgeneral/thread/c672c8ee-bf2a-41b4-bb8b-aa76cc5d9b95 (pubblicato da Todd Fleenor)

Il problema può essere risolto questo errore redragging tabella dal server Explorer per il progettista e la ricostruzione. Quindi il progettista non era sincronizzato con SQL Table ...

+0

ha funzionato per me. Il modo migliore per risolvere la situazione è creare un nuovo file linq in sql, trascinare e rilasciare le tabelle e quindi copiare il codice XML risultante – madoke

0

Ho avuto lo stesso problema e ho appena cancellato la tabella nel file .dbml (designer) e ho abbandonato nuovamente il database, quindi ho creato la mia applicazione. Ha risolto il mio problema.

Problemi correlati