次のような方法で、SQLからデータを読み取り、WCF経由でクライアントアプリに送信するアプリケーションがあります。
SqlDataAdapter da = new SqlDataAdapter( cmd )
DataSet ds = new DataSet();
da.Fill( ds );
return ds;
すべての日付/時刻はUTCとしてデータベースに保存されます。私が気付いたのは、アプリケーションを実行しているコンピューターの時計が歪んでいると、クライアントが受信する日付/時刻も歪んでしまうということです。DateTimeタイプが指定されていない場合、WCFはそれを内部で現地時間として表し、そのように送信するようです。そのため、アプリケーションとクライアントの時間差により、日付/時刻がシフトします。
データセットが取得されて日付/時刻フィールドが修正されるので、確かにデータセットを調べることができますが、すべてのDateTimeフィールドがda.Fill()で自動的にDateTimeKind.Utcになるように、データセットを埋めるより良い方法を考えている人はいますか?