2010-07-14 4 views
1

Я хочу выполнить пользовательский запрос, чтобы получить datetime сервера БД select Getdate() с использованием сущности framework. Как я могу это сделать?Выполнение пользовательского запроса - Entity Framework

Благодаря

+0

http://stackoverflow.com/questions/200617/how-do-i-use-sqls-getdate-and-dateadd-in-a-linq-to-sql-expression Второй ответ. – MrFox

+0

Я использую Entity Framework, скорее LINQ. это для LINQ –

+0

Какой у вас поставщик БД? MS SQL Server? MySQL? Oracle? ... – Yakimych

ответ

4
ObjectQuery<DateTime> date = new ObjectQuery<DateTime>("select Getdate()", context) 
DateTime now = date.Single(); 
+0

Typo: date.Single() –

+0

Я получаю это исключение «Синтаксис запроса недействителен». –

2

Вы можете попробовать somethink так:

public static partial class ObjectContextExtension 
{ 
    public static T ExecuteScalarCommand<T>(this ObjectContext context, string command) 
    { 
     DbConnection connection = ((EntityConnection)context.Connection).StoreConnection; 
     if (connection.State == ConnectionState.Closed) 
      connection.Open(); 

     DbCommand cmd = connection.CreateCommand(); 
     cmd.CommandText = command; 
     cmd.CommandType = CommandType.Text; 

     return (T)cmd.ExecuteScalar(); 
    } 

Добавить метод "ExecuteScalarCommand" в ObjectContext.
Вы просто указываете запрос SQL как параметр и тип возвращаемого значения для общего типа.

-1
Public Function GetDateTimeFromServer() As DateTime 
    Using context As New NorthwindEntities() 
     Dim dateQry As IQueryable(Of DateTime) = From bogus In context.Products_ 
      Select DateTime.Now 
     Dim result As DateTime = dateQry.First() 
     Return result 
    End Using 
End Function 

Вы можете использовать запрос к таблице (например, продукты) и убедитесь, что вы не выбрать столбцы в таблице, как показано в приведенном выше коде. Он не изящный, но он работает.