2010-07-14 69 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 

您可以对表(例如产品)使用查询,并确保您没有选择表中的任何列,如上面的代码所示。它不是优雅的,但它的作品。