За последние пару дней я заметил проблему, когда мои данные, отправленные в базу данных сервера sql, неверны.У меня есть веб-страница, где пользователи могут забронировать услуги.Эта веб-страница содержит имя, дату, время начала и время окончания (BookingID требуется для транзакций, но генерируется базой данных), которые я форматирую в виде строки JSON следующим образом:
{"BookingEnd":"\/Date(2012-26-03 09:00:00.000)\/","BookingID":1,"BookingName":"client test 1","BookingStart":"\/Date(2012-26-03 10:00:00.000)\/","RoomID":4}
Затемпередается службе WCF, которая обрабатывает вставку базы данных следующим образом:
[WebInvoke(Method = "POST", RequestFormat = WebMessageFormat.Json, UriTemplate = "createbooking")]
void CreateBooking(Booking booking);
[DataContract]
public class Booking
{
[DataMember]
public int BookingID { get; set; }
[DataMember]
public string BookingName { get; set; }
[DataMember]
public DateTime BookingStart { get; set; }
[DataMember]
public DateTime BookingEnd { get; set; }
[DataMember]
public int RoomID { get; set; }
}
Booking.svc
public void CreateBooking(Booking booking)
{
BookingEntity bookingEntity = new BookingEntity()
{
BookingName = booking.BookingName,
BookingStart = booking.BookingStart,
BookingEnd = booking.BookingEnd,
RoomID = booking.RoomID
};
BookingsModel model = new BookingsModel();
model.CreateBooking(bookingEntity);
}
Модель бронирования:
public void CreateBooking(BookingEntity booking)
{
using (var conn = new SqlConnection("Data Source=cpm;Initial Catalog=BookingDB;Integrated Security=True"))
using (var cmd = conn.CreateCommand())
{
conn.Open();
cmd.CommandText =
@"IF NOT EXISTS ( SELECT * FROM Bookings WHERE BookingStart = @BookingStart AND BookingEnd = @BookingEnd AND RoomID= @RoomID )
INSERT INTO Bookings ( BookingName, BookingStart, BookingEnd, RoomID ) VALUES ( @BookingName, @BookingStart, @BookingEnd, @RoomID )";
cmd.Parameters.AddWithValue("@BookingName", booking.BookingName);
cmd.Parameters.AddWithValue("@BookingStart", booking.BookingStart);
cmd.Parameters.AddWithValue("@BookingEnd", booking.BookingEnd);
cmd.Parameters.AddWithValue("@RoomID", booking.RoomID);
cmd.ExecuteNonQuery();
conn.Close();
}
}
Это обновляетбазы данных, но время заканчивается "1970-01-01 00: 00: 02.013" каждый раз, когда я отправляю дату в вышеуказанном формате json.Однако, когда я делаю запрос в студии управления SQL-сервером с указанным выше форматом даты («ГГГГ-ММ-ДД ЧЧ: ММ: СС.ммм»), он вставляет правильные значения.Кроме того, если я отправляю миллисекундную дату и время в wcf, вставляется правильная дата.Кажется, проблема в формате, который я отправляю.Я немного заблудился с этой проблемой.Я действительно не понимаю, почему он это делает.Любая помощь будет принята с благодарностью.Спасибо.