2015-07-21 81 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