У меня проблема с повторным вызовом службы RIA WCF для обновления данных на стороне клиента.Вот мой случай:
На стороне сервера служба домена выглядит примерно так:
public IQueryable<Person> GetPersonByID(int id)
{
var result = this.ObjectContext.Persons.
Where(e => e.PersonID == id);
return result; // check point 1
}
На стороне клиента я выполняю вызов следующим образом (это вызов кнопкойЯ вызвал кнопку «Обновить»):
this._amsService.Context.Load<Person>(
this._amsService.Context.GetPersonByIDQuery(this.Person.ID),
LoadBehavior.RefreshCurrent,
result =>
{
this.Person = result.Entities.FirstOrDefault(); //check point 2
this.RaisePropertyChanged("Person");
}, null);
Вот что я пытаюсь:
Предположим, у меня есть человек в БД с данными, скажем personID=1
, Age = 16
.
Затем запустите приложение, я получу данные правильным способом.
затем перейдите в базу данных, обновите данные с помощью SQL, чтобы изменить Age = 20
.
Затем вернитесь в приложение и нажмите кнопку «Обновить», чтобы сделать новый вызов, но возраст не обновляется до 20
, он по-прежнему 16
.
Я запускаю приложение в режиме отладки и проверяю данные:
В контрольной точке 1 проверяю данные в результате, все нормально, Age = 20
.
В контрольной точке 2 я проверяю данные в result.Entities
, данные не были обновлены, они все еще Age = 16
.
Я пробовал LoadBehavior.MergeIntoCurrent,LoadBehavior.RefreshCurrent
, но безуспешно.
Так что мне нужно обновить страницу хоста приложения SL, чтобы перезагрузитьПосле этого я могу увидеть новые данные.Это не приемлемо для конечных пользователей.
Я не понимаю, почему.Я также пытаюсь использовать fiddler для перехвата данных, когда нажимаю кнопку обновления, данные действительно получают самые последние Age = 20
.
Как решить эту проблему?