2009-02-03 8 views
15

Je le code suivant:Linq - La ligne est introuvable ou changé

 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(); 

Regarder SQL Profiler, l'instruction SQL suivante est générée:

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

Pourquoi mon où la déclaration comprend pas "Où id = ...." ???

Qu'est-ce que je fais mal?

Mon application lance un ChangeConflictException avec le message ... « La ligne est introuvable ou changé »

+0

Nous aurions besoin de voir le code avant cela ... comment/quand votre datacontext est instancié? Où est-ce que imageMetaData.ID est défini? –

+2

Avez-vous des déclencheurs sur cette table? – BFree

Répondre

38

Vérifiez pour vous assurer que le modèle correspond à la DB. J'ai couru à travers ceci s'ils sont désynchronisés, dans la plupart des cas le drapeau nullable. Découvrez ce article pour une cause possible. Je suppose que vous utilisez la version finale de .net 3.5 (Visual Studio 2008).

+2

Merci, était juste un problème simple non défini. Doit avoir une meilleure façon de garder la synchronisation de DB! –

+0

Si le schéma est simple, envisagez de créer le schéma de base de données à partir de DBML. Cela fait du DBML la source de la vérité. –

1

trouvé la solution dans: http://social.msdn.microsoft.com/Forums/en-US/linqprojectgeneral/thread/c672c8ee-bf2a-41b4-bb8b-aa76cc5d9b95 (publié par Todd Fleenor)

Le problème peut être résolu par cette erreur redragging la table de l'explorateur de serveur pour le concepteur et la reconstruction. Donc, le concepteur était désynchronisé avec la table SQL ...

+0

A travaillé pour moi. La meilleure façon de résoudre la situation consiste à créer un nouveau fichier linq to sql, à faire glisser et déposer les tables, puis à copier le fichier XML résultant – madoke

0

J'ai eu le même problème et j'ai supprimé la table dans le fichier .dbml (designer) et j'ai rediffusé la base de données, puis construit mon application. Cela a résolu mon problème.

Questions connexes