Клиент отслеживает сущности (при условии, что листинг является типом сущности). Таким образом, контейнер (DataServiceContext) содержит ссылки на все сущности, возвращаемые им при оценке запросов.
Это необходимо, чтобы иметь возможность отслеживать изменения в сущностях, чтобы при вызове SaveChanges контекст знал, какие сущности должны отправить запрос на обновление сервера.
В настоящее время клиент не выполняет отслеживание уровня свойства, поэтому он знает только, изменилась ли сущность в целом или нет. Нет, если изменилось только одно свойство
В результате, когда он читает данные, поступающие с сервера, и ответ содержит объект, который клиент уже отслеживает, он должен решить, следует ли использовать данные, поступающие с сервера, или использовать значения на клиенте. (в основном на тот момент у него есть две версии одной и той же сущности, одна от клиента, другая от сервера).
MergeOption - это настройка, сообщающая клиенту, что делать в этом случае.
По умолчанию клиентские значения выигрывают, при этом считается, что если вы изменили некоторые значения на клиенте, вы не захотите, чтобы значения с сервера перезаписывали ваши изменения, пока вы не подтвердите их с помощью SaveChanges.
Таким образом, при первом обращении к сервисной операции клиент получает сущности с сервера (впервые), и вы получаете результаты. Во втором вызове вы, вероятно, получите те же сущности, но с новыми значениями в них. Но настройкой по умолчанию на клиенте является сохранение значений клиента, поэтому при оценке запроса фактически удаляются входящие данные с сервера.
MergeOption - это правильный способ сообщить клиенту, что делать.