2010-10-28 24 views
0
var user = new User() 
{ 
    Username = "a", 
    Password = "b", 
}; 

user.Save(); 

Console.WriteLine(user.ID)   // prints "504" 
Console.WriteLine(user.IsLoaded()) // prints "false" 

Si le ID est automatiquement définie sur Save(), je me attends IsLoaded() à définir aussi (à true). Pourquoi est-ce ma responsabilité d'appeler user.SetIsLoaded(true);?Pourquoi IsLoaded n'est-il pas défini sur true lors de la sauvegarde()?

(je me rends compte que je peux modifier ActiveRecord.tt pour obtenir ce travail, mais peut-être que je ne comprends pas ce que représente en fait IsLoaded().)

Répondre

0

IsLoaded indique que le dossier que vous êtes à la recherche représente des données dans la base de données. Ceci est par exemple utilisé pour détecter qu'un enregistrement est sale. IsLoaded == false Les enregistrements ne peuvent pas être sales car ils ne représentent pas les données dans la base de données. IsLoaded == true fait, donc la modification des propriétés sur un tel enregistrement le rend sale et vous pouvez enregistrer à nouveau l'enregistrement.

Subsonic 3 Save() then Update()? décrit également quelques détails à ce sujet.