Je travaille avec une application héritée que j'essaie de modifier pour qu'elle puisse fonctionner avec SQL CE, alors qu'elle a été écrite à l'origine contre SQL Server. Le problème que j'obtiens maintenant est que quand j'essaye de faire dataAdapter.Update, SQL CE se plaint qu'il n'attend pas le mot-clé SELECT dans le texte de commande. Je crois que c'est parce que SQL CE ne supporte pas les commandes SELECT par lots.Que font ces commandes de table générées automatiquement par .NET? par exemple. UPDATE/INSERT suivi d'un SELECT
La commande adaptateur de table généré automatiquement ressemble à ceci ...
this._adapter.InsertCommand.CommandText = @"INSERT INTO [Table] ([Field1], [Field2]) VALUES (@Value1, @Value2);
SELECT Field1, Field2 FROM Table WHERE (Field1 = @Value1)";
Que fait-il? Il semble qu'il insère de nouveaux enregistrements du datatable dans la base de données, puis relire cet enregistrement de la base de données dans le datatable? Quel est le point de cela? Puis-je simplement parcourir le code et supprimer toutes ces instructions SELECT? Ou existe-t-il un moyen plus simple de résoudre mon problème de vouloir utiliser ces adaptateurs de données avec SQL CE?
Je ne peux pas régénérer ces adaptateurs de table, comme les gens qui savaient depuis longtemps partir.
Il est logique que vous récupériez des champs auto-incrémentés/identité/rowguid mais ici cela semble un peu superflu. +1 pour me battre dessus. – Lazarus
@Lazarus, Mmm, je suis d'accord, j'ai toujours pensé que c'était un peu exagéré même pour ça. Je pense qu'il est également utilisé pour définir les champs qu'il croit être les actuels dans la base de données, pour la vérification de la simultanéité (que je n'ai jamais aimé non plus). – Paddy
Ah ... c'est intéressant. J'ai essayé d'enlever le SELECT des textes de commande, et j'ai eu une exception de violation de concurrence. Pensez-vous que les SELECT sont nécessaires pour éviter cette erreur, ou pourrait-il être autre chose? – RickL