为什么在Save()时不会将IsLoaded设置为true?
问题描述:
var user = new User()
{
Username = "a",
Password = "b",
};
user.Save();
Console.WriteLine(user.ID) // prints "504"
Console.WriteLine(user.IsLoaded()) // prints "false"
如果ID
属性自动上Save()
设置,我希望IsLoaded()
也被设置(以true
)。为什么我的责任是致电user.SetIsLoaded(true);
?为什么在Save()时不会将IsLoaded设置为true?
(我知道我可以编辑ActiveRecord.tt
得到这个工作,但也许我只是不明白IsLoaded()
实际上代表。)
答
IsLoaded
说你正在寻找的记录代表数据库中的数据。这例如用于检测记录是否脏。 IsLoaded == false
记录不能变脏,因为它们不代表数据库中的数据。 IsLoaded == true
确实如此,因此在这样的记录上更改属性会将其设置为脏,并且可以再次保存记录。
Subsonic 3 Save() then Update()?也描述了一些细节。