Как задать сервер базы данных для текущего dateTime с использованием структуры сущности?
-
24-09-2019 - |
Вопрос
У меня есть объект с модифицированным свойством DateTETIME, который я хочу обновляться с текущим DateTime из базы данных вместо сервера «Приложения», выполняющих приложение.
Каждый раз, когда я хочу обновить или добавить человека на мою дату на DateBase на SQL Server 2008, я хочу заполнить модифицированноеdateTime. Это не так, как я могу изменить запрос обновления, как с командой адаптера данных, когда я работаю с набором данных, и определить для моего измененногоdateTime, поданных, чтобы быть GetDate (). Я создал сохраненную функцию, чтобы вернуть мне значение метода getdate (), но у меня возникла проблема для импорта процедуры, которая возвращает значения как int, string или no значение вообще, уже просто значения сущности как личность, например, в моем случае. Почему это?
Во всяком случае, это будет иметь большую помощь, если вы можете помочь мне получить текущее dateTime с сервера базы данных.
Решение
Есть ли причина, по которой вы просто не можете подталкивать его в вашу базу данных? Если вы включите dateTime.now в вашем запросе объекта, он будет толкать его (getdate) в базу данных.
Пример linq к объектам
var dQuery = dbContext.CreateQuery<DateTime>("CurrentDateTime() ");
DateTime dbDate = dQuery.AsEnumerable().First();
SQL сгенерирован ..
SELECT GetDate() AS [C1] FROM ( SELECT cast(1 as bit) AS X ) AS [SingleRowTable1]
Может быть лучшим способом сделать это?
Другие советы
Это обновление ответа @NIX на EF4:
var dateQuery = dbContext.Database.SqlQuery<DateTime>("SELECT getdate()");
DateTime serverDate = dateQuery.AsEnumerable().First();
Обновление для .NET CORE 2.0
var dual = databaseContext
.Set<Dual>()
.FromSql("SELECT -1 AS Id, GETDATE() AS DateTime")
.First();
Поддельный объект
public class Dual
{
public int Id { get; set; }
public DateTime DateTime { get; set; }
}
В VS 2008, если вы добавите шаблон функции, чтобы вернуть скаляр, он не добавляет код, чтобы облегчить в использовании. Вам нужно получить доступ к шаблону функции напрямую - я использую частичный класс для создания необходимых методов простоты использования. Они исправили это в VS2010.
public DateTime GetDateTime()
{
var returnValue = new DateTime();
using (var connection = new EntityConnection(Connection.ConnectionString))
{
connection.Open();
using (var command = connection.CreateCommand())
{
command.CommandText = "myStoredProc";
command.CommandType = CommandType.StoredProcedure;
try
{
returnValue = Convert.ToDateTime(command.ExecuteScalar());
}
finally
{
connection.Close();
}
}
}
return returnValue;
}
Больше информации:Импорт функций в модели объекта с типом возврата без сущности