5

我是項目中的ASP.NET/MVC 3.0 VS2010項目的新手。我已經將兩個存儲過程導入爲函數導入,併爲此創建了一個複雜的數據類型。使用複雜數據類型調用EF中的存儲過程

我試圖運行下面的C#代碼:

public ComplexDataType RunStoredProc() 
{ 
    var context = new DbEntities(); 
    int param1 = 370; 
    int param2 = -1; 
    string param3 = "Current"; 

    ComplexDataType result = new ComplexDataType; 
    result = context.StoredProc(param1, param2, param3); 
    return result; 
} 

而我得到的錯誤:

Cannot implicitly convert data type 
    System.Data.Objects.ObjectResult(ComplexDataType) to 'ComplexDataType' 

我在做什麼錯?如何正確地將存儲過程的結果存儲在複雜的數據類型中?

+0

顯示您的映射和StoredProc方法。 – Pawel

回答

1

嘗試改變這一點:

result = context.StoredProc(param1, param2, param3); 

這樣:

result = (ComplexDataType) context.StoredProc(param1, param2, param3); 
+0

此處同樣的錯誤;它不會讓我作爲複雜的數據類型進行投射。仍然顯示與上面相同的錯誤。任何其他想法? –

2

您可以使用DbSet.SqlQuery方法來獲取從存儲過程的結果。

int param1=12; 
int param2=53; 
var results=context.ComplexDataTypes.SqlQuery. 
         ("dbo.YourSPNameHere @p0 @p1", param1,param2).Single(); 

假設你有一個像這樣的集合定義了你的DbContext類。

public DbSet<ComplexDataType> ComplexDataTypes { set;get;} 

更多信息可用here

+0

該項目不識別context.Database.SqlQuery,但它給了我一個選項context.ExecuteStoreQuery;按照上面的語法使用相同的命令,它給了我相同的錯誤 - 不能隱式轉換。任何其他想法? –

+0

你正在使用哪個版本的實體框架?你的存儲過程是否返回一些東西? – Shyju

+0

使用EF 4.0;存儲過程返回大約10列,通常在5行和15行 –

相關問題