2015-07-21 101 views
1

可能是一个很好的解决办法。实体框架6 context.Database.SqlQuery <bool>

我需要做一个原始的SQL数据库查询:

var blnOrders = (bool)db.Database.SqlQuery<bool>(@"SELECT 
    CASE WHEN (EXISTS (SELECT 
     1 AS [C1] 
     FROM [dbo].[Orders] AS [Extent1] WITH (TABLOCKX, HOLDLOCK) 
     WHERE [Extent1].[OrderNumber] IS NOT NULL 
    )) THEN cast(1 as bit) WHEN (NOT EXISTS (SELECT 
     1 AS [C1] 
     FROM [dbo].[Orders] AS [Extent2] WITH (TABLOCKX, HOLDLOCK) 
     WHERE [Extent2].[OrderNumber] IS NOT NULL 
    )) THEN cast(0 as bit) END AS [C1] 
    FROM (SELECT 1 AS X) AS [SingleRowTable1]") 

一个DbRawSqlQuery<bool>从此返回。试图将其转换为bool,然后使用变量使我有以下错误:

Cannot implicitly convert type 'System.Data.Entity.Infrastructure.DbRawSqlQuery<bool>' to 'bool' 

我不知道我做错了什么?我以为你可以把它投到bool

检查了文档here,但仅有一个使用SqlQuery<string>的示例。

+1

删除此''(布尔)''从开始 –

+0

铸造它必须是足以称之为单上DbRawSqlQuery 这样 VAR blnOrders =(bool)db.Database.SqlQuery (@“...”)。Single(); – Igor

回答

1

拆下(布尔)作为伊赫桑告诉你,然后

var res = await blnOrders.SingleAsync(); 
+0

作者:blnOrders.SingleAsync()你的意思是db.Orders.SingleAsync? – PussInBoots

+0

不,我的意思是使用blnOrders,因为你发布但没有(布尔)。 SingleAsync将实际执行查询,等待将使您的代码等待,直到检索到响应(因为该方法是异步的)。 – y0uri