2009-08-25 6 views
0

Chaque fois que j'essaie d'utiliser un référentiel simple pour simplement mettre à jour un enregistrement, j'obtiens une référence d'objet non définie sur une instance d'une erreur d'objet. Je soupçonne que je fais quelque chose d'incorrect, quelqu'un peut-il voir un problème avec les lignes de code ci-dessous pour enregistrer des données à subsonic? J'utilise .Net 3.5, SQL Server 2008 et Subsonic 3.0.Subsonic: Simple Repository - Mise à jour Crash

Merci pour toute aide.

 SimpleRepository repo = new SimpleRepository("Test", SimpleRepositoryOptions.RunMigrations); 

     //Add the test object 
     SimpleObject simple = new SimpleObject(); 
     simple.TestString = "Test"; 
     repo.Add(simple); 

     Console.WriteLine(simple.TestString); 

     //Reload the object and update it 
     SimpleObject simpleReloaded = repo.Single<SimpleObject>(simple.ID); 
     simpleReloaded.TestString = "Editted"; 
     repo.Update(simpleReloaded);//This line seems to crash repeatedly 

     Console.WriteLine(repo.Single<SimpleObject>(simple.ID).TestString); 

Répondre

2

Je pense que pour une raison quelconque vous obtenez un nouvel objet sur la ligne:

SimpleObject simpleReloaded = repo.Single<SimpleObject>(simple.ID); 

Ainsi, lorsque vous essayez de mettre à jour subsonique est de lancer une exception parce simpleReloaded n'a pas une clé primaire. Essayez de vérifier la valeur de simple.ID puis voir si simpleReloaded est effectivement peuplée ou si vous êtes juste une nouvelle SimpleObject

EDIT: On dirait que c'est un bug essayer de tirer la dernière version de github

+0

Merci pour la réponse, je ne suis pas mince k c'est que, bien que, les valeurs d'ID sont les mêmes pour les deux objets: Valeur de simple.ID: 2 Valeur de simpleReloaded.ID = 2 D'autres idées? – gmn

+0

Que se passe-t-il si vous modifiez simplement la valeur de TestString et que vous la mettez à jour? Aussi pouvez-vous poster plus de détails sur votre accident, la trace de la pile et le sql généré par la mise à jour serait le plus utile. –

+0

Pouvez-vous également confirmer que vous utilisez la dernière version de SubSonic - 3.0.0.3. Il y a quelques bugs dans 3.0 qui ont été corrigés. –