2010-07-14 66 views
1

我想執行自定義查詢來使用實體框架獲取數據庫服務器select Getdate()的日期時間。我怎樣才能做到這一點?執行自定義查詢 - 實體框架

感謝

+0

http://stackoverflow.com/questions/200617/how-do-i-use-sqls-getdate-and-dateadd-in-a-linq-to-sql-expression 第二個答案。 – MrFox 2010-07-14 12:58:44

+0

我正在使用實體框架,而不是LINQ。這是LINQ – 2010-07-14 13:01:32

+0

什麼是您的數據庫供應商? MS SQL Server? MySQL的?甲骨文? ... – Yakimych 2010-07-14 13:37:47

回答

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

錯字:date.Single() – 2010-07-14 13:11:08

+0

我收到此異常「查詢語法無效」。 – 2010-07-14 13:21:19

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 

您可以對錶(例如產品)使用查詢,並確保您沒有選擇表中的任何列,如上面的代碼所示。它不是優雅的,但它的作品。