2013-07-31 3 views
2

У меня есть таблица user_rol, в этой таблице указано значение expiration_date, это поле используется для «удаления» ролей, когда значение expiration_date равно <, чем сейчас/сейчас. Когда пакет «удаляется», мне нужно установить expiration_date на сегодняшний день/сейчас, но я хочу, чтобы сегодня/сейчас был тот, который был на сервере базы данных.Использование базы данных datetime

Как я могу это сделать?

Это то, что я сейчас:

user_rolrol = db_cm.user_rol.Where(r => r.id_rol == idRol && r.id_user == idUser).FirstOrDefault(); 

rol.expiration_date = DateTime.Now; 
db_cm.SaveChanges(); 
+0

не ответ, но: почему не использовать время UTC? (DateTime.UTCNow одинаково на каждом компьютере) –

+0

@trippino Я не думаю, что это так. Он по-прежнему генерируется из системного времени, которое может быть легко различным на разных компьютерах. Фактически, 'DateTime.Now' генерируется из' DateTime.UtcNow'. – Mansfield

+0

@ Мансфилд нет, на самом деле я написал «не ответ». Я написал это только потому, что считаю, что ему нужно время сервера, чтобы иметь дату и время без учета часового пояса, и это может быть достигнуто и с использованием UTC. –

ответ

0

Вы всегда могли выполнить запрос объекта против вашего контекста EF, а затем присвоить результат вашего user_rolrol объекта перед его сохранением.

Как так:

ObjectQuery<DateTime> date = new ObjectQuery<DateTime>("select Getdate()", db_cm) 
DateTime now = date.Single(); 

user_rolrol = db_cm.user_rol.Where(r => r.id_rol == idRol && r.id_user == idUser).FirstOrDefault(); 

rol.expiration_date = now; //this from the objectquery against your context 
db_cm.SaveChanges(); 
+1

context.Database.SqlQuery в EF5 –

Смежные вопросы