【问题标题】:Entity Framework Code-First Execute Scalar-Valued Functions实体框架代码优先执行标量值函数
【发布时间】:2014-06-03 01:47:06
【问题描述】:

如何先使用代码执行标量函数?以下是我尝试过的,但只返回查询本身,而不是返回值。

using (var dbContext = new FTTRContext())
        {

            queryResult =
                dbContext.Database.SqlQuery<string>("SELECT [dbo].[ufnGetTotalUsers] (GETDATE())").ToString();
        }

【问题讨论】:

    标签: c# entity-framework code-first


    【解决方案1】:

    SqlQuery 返回DbRawSqlQuery 的实例。此类是可枚举的,它希望您通过标准 LINQ 运算符或通过foreach 等枚举它。此对象上的.ToString() 仅返回将被执行的查询。要获得您想要的结果,请使用.Single().SingleAsync()

    queryResult = dbContext.Database
        .SqlQuery<string>("SELECT [dbo].[ufnGetTotalUsers] (GETDATE())")
        .Single();
    

    这应该返回您正在寻找的标量字符串结果。

    话虽如此,您的查询看起来像是无效的 SQL。您只是想从 SQL Server 获取日期吗?如果是这样,查询应该是SELECT GETDATE()。完成此操作后,您可能必须使用 .SqlQuery&lt;DateTime&gt;(),因为该值的类型不是字符串。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-09-01
      • 2014-05-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-29
      • 2013-12-29
      相关资源
      最近更新 更多