Вы можете попробовать изменить значение DateTimeKind на стороне клиента на Unspecified. Таким образом, WCF и Entity Framework не будут иметь достаточно информации, чтобы попытаться сделать это умно.
DateTime.SpecifyKind
DateTimeKind
Вслед за этим не работает и ваш комментарий в вопросе ...
Во-первых, что вы пытаетесь сделать - хотите ли вы, чтобы значения, хранящиеся в базе данных, находились в часовом поясе клиента - в вашем случае по британскому времени - или вы хотите, чтобы они были сохранены в UTC? По моему опыту, лучшее решение - сохранить его как UTC, в противном случае вы действительно запутаетесь, если у вас несколько клиентов в разных часовых поясах.
Предполагая, что вы хотите сохранить его как UTC, вам необходимо преобразовать его в UTC на стороне клиента, прежде чем передавать его по сети ( DateTime.ToUniversalTime ), затем вам необходимо убедиться, что сервер распознает его как UTC (он должен делать это автоматически, но вы можете позвонить в SpecifyKind после его получения просто для уверенности). Entity Framework должен , а затем сохранить его в базе данных без изменений - как вы описали в своем комментарии.
Теперь нужно понять, что время, когда вы вернетесь к клиенту при получении данных, будет в UTC. Поэтому, когда британское время больше не совпадает с UTC, это будет выглядеть неправильно. Поэтому убедитесь, что вы вызываете DateTime.ToLocalTime для любых значений, которые вы возвращаете с сервера, прежде чем отображать их пользователю.
По крайней мере, таков подход I .
(О, и как коллега-разработчик из Великобритании, я считаю действительно полезным устанавливать время на моем клиентском ПК в любое время, кроме времени Великобритании, когда выполняю такую работу - в противном случае вы будете вводить ошибки, которые вы не заметите. до тех пор, пока мы не перейдем к BST. По моему опыту, это случается после того, как ты ушел из жизни)