У меня следующая проблема.
У меня есть объект с некоторыми свойствами DateTime и таблица в базе данных, в которой я храню все эти объекты. На сервере Sql я хочу сохранить свойства DateTime в некоторых столбцах типа данных DateTime, но формат datetime на сервере SQL отличается от класса DateTime в c #, и я получил исключение sql, говорящее «DateTime не может быть проанализирован». Я знаю, как решить эту проблему с помощью формата yyyy-MM-dd, но является ли это правильным и лучшим решением для этого?
public void UpdateInvitation(string ownerId, string couponKey, string status, string invitedEmail, DateTime? sentDate, DateTime? redeemedDate)
{
using (var con = new SqlConnection(this.ConnectionString))
{
try
{
con.Open();
var command =
new SqlCommand(
"UPDATE INVITATIONS SET Status='@status', InvitedEmail='@invitedEmail', SentDate='@sentDate', RedeemDate='@redeemedDate' WHERE CouponKey='@CouponKey' AND OwnerId='@OwnerId'");
var ownerIdParam = new SqlParameter("@ownerId", ownerId);
var couponKeyParam = new SqlParameter("@couponKey", couponKey);
var statusParam = new SqlParameter("@status", status);
var invitedEmailParam = new SqlParameter("@invitedEmail", invitedEmail);
var sentDateParam = new SqlParameter("@sentDate", sentDate.Value) { SqlDbType = SqlDbType.DateTime };
var redeemedDateParam = new SqlParameter("@redeemedDate", redeemedDate.Value) { SqlDbType = SqlDbType.DateTime };
command.Parameters.AddRange(new[]
{
ownerIdParam, couponKeyParam, statusParam, invitedEmailParam,
sentDateParam, redeemedDateParam
});
command.Connection = con;
var rowsAffected = command.ExecuteNonQuery();
Log.DebugFormat("Invitation updated for owner id : [{0}] with key {1}, {2} rows affected", ownerId,
couponKey, rowsAffected);
}
catch (Exception exception)
{
throw new InvitationDataContextException(exception);
}
}
}