Je développe actuellement une application utilisant SubSonic 2.2 et j'ai des problèmes pour mettre à jour une des colonnes d'un PK composite sur une table.Mise à jour d'une valeur de clé primaire en utilisant SubSonic 2.2
Mon code est à peu près ceci:
foreach (pageItem page in pages) {
page.IdFile = newIdFile;
page.PageNumber = counter;
counter++;
page.Save();
}
Cela ne met pas à jour mon dossier.
Ma table pageItem contient 4 colonnes qui composent le PK. J'ai seulement besoin de mettre à jour l'un d'eux pour simuler que je déplace un objet de page d'un fichier à l'autre, pour éviter de créer un nouvel enregistrement juste pour copier essentiellement toutes les mêmes valeurs sauf cet ID et le numéro de page.
Lorsque j'utilise SQL Server profileur alors je peux voir que le code suivant est émis à la DB:
exec sp_executesql N'UPDATE [dbo].[pageItem] SET [IdFile] = @IdFile, [PageNumber] = @PageNumber WHERE [IdPage] = @IdPage AND [IdCont]
= @IdCont AND [IdExp] = @IdExp AND [IdFile] = @IdFile;
SELECT @IdPage AS id',N'@PageNumber int,@IdPage int,@IdCont int,
@IdExp varchar(1),@IdFile int', @PageNumber=4,@IdPage=329, @IdCont=1, @IdExp='1', @IdFile=156
Donc, fondamentalement, mon problème est que la mise à jour n'utilise des valeurs différentes pour l'ancien et le nouveau IdFichier clés, ils utilisent tous les deux le paramètre @IdFile.
Existe-t-il une solution de contournement qui n'utiliserait de préférence pas CodingHorror, par exemple, que je pourrais utiliser pour mettre à jour mes enregistrements? Cela ne me dérange pas d'utiliser une instruction SQL brute, c'est juste que je suis très intéressé par l'utilisation de SubSonic à son plein potentiel, donc tous les conseils seront grandement appréciés.
Cordialement,
Fernando
Probablement pas dans ce cas, mais considérera certainement sur d'autres utilisations de SubSonic, pour éviter de tels problèmes. Savez-vous si ces types de problèmes ont été résolus en version 3? – Fervelas
Désolé, je ne sais pas, j'utilise toujours 2.2 – kevinw