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

using (var dbContext = new FTTRContext())
        {

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

最佳答案

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

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

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

就是说,您的查询看起来像无效的SQL。您是否只是想从SQL Server获取日期?如果是这样,查询可能应该是SELECT GETDATE()。完成该操作后,由于该值的类型不是字符串,因此可能必须使用.SqlQuery<DateTime>()

关于c# - Entity Framework 代码优先执行标量值函数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24005901/

10-11 01:02