Как задать сервер базы данных для текущего dateTime с использованием структуры сущности?

StackOverflow https://stackoverflow.com/questions/2585272

Вопрос

У меня есть объект с модифицированным свойством 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;
    }

Больше информации:Импорт функций в модели объекта с типом возврата без сущности

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top