Я использую ASP.NET DynamicData (на основе LINQ to SQL) на своем сайте для базовых строительных лесов. В одну таблицу я добавил дополнительные свойства, которые не хранятся в таблице, а извлекаются откуда-то еще. (Информация профиля для учетной записи пользователя, в данном случае).
Они отображаются просто отлично, но при редактировании этих значений и нажатии «Обновить» они не изменяются.
Вот как выглядят свойства, таблица является стандартной таблицей aspnet_Users:
public String Address
{
get
{
UserProfile profile = UserProfile.GetUserProfile(UserName);
return profile.Address;
}
set
{
UserProfile profile = UserProfile.GetUserProfile(UserName);
profile.Address = value;
profile.Save();
}
}
Когда я запустил отладчик, я заметил, что для каждого обновления метод доступа set
вызывается три раза. Один раз с новым значением, но на вновь созданном экземпляре пользователя, затем один раз со старым значением, снова на новом экземпляре и, наконец, со старым значением на существующем экземпляре.
Интересно, я проверил свойства, созданные дизайнером, и они тоже трижды вызываются (почти) одинаково. Разница лишь в том, что последний вызов содержит новое значение для свойства.
Я немного озадачен здесь. Почему три раза, и почему мои новые свойства ведут себя по-разному? Буду благодарен за любую помощь по этому вопросу! =)