2010-12-07 32 views
0

J'ai une mise à jour très simple.Selon l'ID de la table, je veux définir une colonne booléenne à vrai.Le problème est que je connais Subsonic est comme "noir".Comment effectuer une mise à jour simple en utilisant Subsonic, dans Visual STudio (C#)

J'ai fait ce qui suit, mais cela ne fonctionne pas.

new SubSonic.Update(FundReturn.Schema).Set(FundReturn.Columns.IsDeleted).EqualTo(1) 
      .Where(FundReturn.Columns.FundId).IsEqualTo(Convert.ToInt32(row.RecordID)).Execute(); 

La ligne ci-dessus semble très logique, mais cela ne fonctionne pas.

Je vous serais reconnaissant que cette aide

+0

Vous pouvez imprimer le code SQL généré par SubSonic pour obtenir plus d'informations. Voici un exemple comment: dim q comme SubSonic.SqlQuery = new SubSonic.Update ...; Debug.Print (q.ToString()) – sparks

Répondre

0

Woah là .... il est beaucoup plus simple que vous pourriez penser ....

var objActiveRecord = SomeActiveRecordType.SingleOrDefault(o => o.Id == iId); 
objActiveRecord.SomeBoolProperty = true; 
objActiveRecord.Update(); 
+0

cela suppose que vous utilisez les modèles de génération de code SubSonic. – JTtheGeek

2

Deviner, mais au lieu de mettre à IsDeleted ' 1 'comme il apparaîtrait dans la base de données, définissez-le sur' true 'car la propriété avec laquelle vous travaillez est probablement interprétée comme un booléen dans le code généré. SubSonic traitera automatiquement cela et la conversion RecordId pour vous.

new SubSonic.Update(FundReturn.Schema).Set(FundReturn.Columns.IsDeleted).EqualTo(true) 
    .Where(FundReturn.Columns.FundId).IsEqualTo(row.RecordID).Execute();