实体框架代码优先执行标量值函数

use*_*347 13 c# entity-framework code-first

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

using (var dbContext = new FTTRContext())
        {

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

Kir*_*oll 37

SqlQuery返回一个实例DbRawSqlQuery.这个类是一个可枚举的,它希望你通过标准LINQ运算符或者通过foreach等 对它进行枚举,.ToString()只需返回将要执行的查询.要获得所需的结果,请使用.Single().SingleAsync().

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

这应该返回您要查找的标量字符串结果.

话虽这么说,您的查询看起来像无效的SQL.你只是想从SQL Server中获取日期吗?如果是这样,查询应该是SELECT GETDATE().一旦这样做,您可能必须使用,.SqlQuery<DateTime>()因为该值的类型不是字符串.