2016-10-13 73 views
2

我使用SP產生一些邏輯,並返回一個表的SQL Server object.If沒有對象發現我只是簡單地返回一個實體在EF6查詢返回空值與

CREATE proc SpDealerDistributionOracle 
(
    @DealerCode varchar(50), 
    @imei varchar(50) 
) 
as 
BEGIN 
    if (some logic) 
     select top 1 * from tblBarCodeInv 
    else 
     select null; 
END 

做工精細..但空的當我這樣在EF 6中寫入查詢時

tblBarCodeInv returnValue = null; 
using (var db=new RBSYNERGYEntities()) 
{ 
     String query = String.Format("SpDealerDistributionOracle 'DealerCode','101001'"); 
     returnValue = db.Database.SqlQuery<tblBarCodeInv>(query).FirstOrDefault();     
} 
return returnValue; 

它引發異常。

我只是想返回一個對象,如果沒有找到返回null,並在C#中做一些邏輯。可以幫助任何人?

+0

「默認」,但我需要使用Sp.As你知道SPS是預編譯和功能not.Their可能是50000 +加上每天操作。因此,這是更好地使用SP –

+0

檢查[此鏈接](https://msdn.microsoft.com/en-us/data/jj592907.aspx) –

+0

這是使用完整,但不是我的問題是。如果沒有找到條目,我就返回null。當我返回它時拋出異常,需要RecId(主鍵) –

回答

2

改變你的程序在這兩種情況下仍然返回一個「集合」。但是在第二種情況下這將是一個空的集合,從而將到達的FirstOrDefault

BEGIN  
    if (some logic) 
     select top 1 * from tblBarCodeInv 
    else 
     SELECT TOP 0 * from tblBarCodeInv 
END 
+0

'{「數據讀取器與指定的'RBSYNERGYModel.tblBarCodeInv'不兼容。類型的成員, 'RecID',在數據讀取器中沒有相應的列,名稱相同。「}'在我的機器上找到 –

+0

你有最新的更新嗎? –

+0

是的,這是肯定的伎倆..謝謝 –