Вы задаете несколько вопросов, поэтому я постараюсь ответить на них отдельно:
Возвращая IQueryable:
Вы не можете вернуть IQueryalbe.IQueryable описывает запрос, который должен быть выполнен.Когда вы пытаетесь вернуть IQueryable из службы, он выполняется во время сериализации ответа службы.Обычно это вызывает исключение, поскольку ObjectContext уже закрыт.
Отслеживание на клиенте:
Да STE могут отслеживать изменения на клиенте, если клиент использует STE!Сборка с STE должна делиться между сервисом и клиентом.
Совместное использование ObjectContext:
Никогда не разделяйте ObjectContext в среде сервера, которая обновляет данные.Всегда создавайте новый экземпляр ObjectContext для каждого вызова.Я описал причины здесь .
Присоединение STE
Вам не нужно прикреплять STE.ApplyChanges сделает все за вас.Также, если вы хотите вернуть заказ обратно из вашей сервисной операции, вы должны вызвать AcceptChanges для него.
Создание контекста объекта в конструкторе сервиса:
Помните, что WCF имеет свойсобственные правила работы с экземплярами сервисов.Эти правила основаны на InstanceContextMode и используют привязку (и вы можете реализовать свои собственные правила, внедрив IInstanceProvider ).Например, если вы используете BasicHttpBinding, экземпляром по умолчанию будет PerCall, что означает, что WCF будет создавать новый экземпляр службы для каждого запроса.Но если вместо этого вы используете NetTcpBinding, по умолчанию будет использоваться экземпляр PerSession, и WCF будет повторно использовать один экземпляр службы для всех запросов, поступающих от одного клиента (экземпляр прокси-сервера одного клиента).
Повторное использование прокси службы на клиенте:
Это также зависит от используемой привязки и экземпляра службы.Когда используется привязка к сеансу, клиентский прокси относится к одному экземпляру службы.Вызов методов на этом прокси-сервере всегда будет выполнять операции с одним и тем же экземпляром службы, поэтому экземпляр службы может иметь состояние (может содержать данные, общие для вызовов).Это не очень хорошая идея, но это возможно.При использовании сеансово-ориентированного соединения вам приходится сталкиваться с несколькими проблемами, которые могут возникнуть (это более сложно).BasicHttpBinding не разрешает сеансы, поэтому даже при использовании одного клиентского прокси каждый вызов обрабатывается новым экземпляром службы.