У меня есть объект Home
, который я отправляю с сервера на своих клиентов.Навигационные свойства не обновляются Обновлено
public Home {
public HomeId {get;set;}
public String Address {get; set;}
public ICollection<Room> Rooms{ get; set;}
}
Управление данными на клиентской стороне осуществляется BreezeJs.
Мое веб-приложение многопользовательское. Всякий раз, когда пользователь обновляет объект Home
, сервер уведомляет всех заинтересованных клиентов, используя SignalR. Когда клиент получает уведомление, он запускает следующий запрос, чтобы обновить свой кэш:
function refresh(homeId) {
var query = entityQuery.from('Homes')
.withParameters({ homeId: homeId });
return manager.executeQuery(query)
.fail(queryfailed);
function queryfailed(data) {
// error
}
}
на стороне сервера управления:
[HttpGet]
public Home Homes(int homeId)
{
var home = _context.Context.Homes
.Include(t => t.Rooms)
.FirstOrDefault(t => t.HomeId == homeId);
return home;
}
Проблема
Когда Home
объект обновляется, все свойства получают новые значения с сервера, но не свойства навигации. Если пользователь добавляет/удаляет Room
в/из данного House
, тогда связанные Rooms
объекты в кеше не обновляются, хотя данные json выглядят отлично и содержат добавленные/удаленные объекты Room
.
Вопросы
Есть простой способ сказать Breeze обновить Home
и все его навигационные свойства? В идеале я хотел бы сделать это, не очищая кеш, как описано here, чтобы избежать некоторых мерцаний в моем пользовательском интерфейсе.
Обновление Я
Я попытался расширяющийся мой запрос, чтобы включить Rooms
по
var query = entityQuery.from('Homes')
.withParameters({ homeId: homeId })
.expand("Rooms");
все тот же вопрос, данные в формате JSON содержит изменения, сделанные другими клиентами, но не отражается на местном лица
Update II
Мне удалось получить изменения для распространения на клиентов, используя expand
. Однако изменения распространяются только при добавлении Rooms
, но не при их удалении.
Почему бы просто не использовать .expand() для свойств навигации, которые вы хотите обновить? Автоматическое обновление всех свойств навигации могло бы стать ДЕЙСТВИТЕЛЬНО беспорядочным, особенно на сложных графиках объектов. –
Я попытался использовать расширение, но он не работал, свойство навигации не обновилось. – GETah
Имели ли эти свойства навигации изменения, когда результаты возвращались? –