我有一個正在執行視圖並返回結果的參數化存儲過程。該視圖顯示了兩個表的連接結果。我需要將參數傳遞給此存儲過程,並使用EF 4.1代碼優先方法從MVC3控制器操作中調用它並返回結果。我怎樣才能做到這一點。請一步一步建議。EF 4.1的存儲過程
謝謝。
我有一個正在執行視圖並返回結果的參數化存儲過程。該視圖顯示了兩個表的連接結果。我需要將參數傳遞給此存儲過程,並使用EF 4.1代碼優先方法從MVC3控制器操作中調用它並返回結果。我怎樣才能做到這一點。請一步一步建議。EF 4.1的存儲過程
謝謝。
我不知道「代碼優先不支持存儲過程」的哪部分人不理解,但是這種情況不斷出現,它不應該。你可以混淆它(種類),但是如果你需要執行存儲過程,那麼你現在不應該先使用代碼。
僅僅因爲微軟沒有在4.1中包含它並不意味着人們不需要它。爲了我自己的類似目的,我已經將所有連接信息與我的POCO建立了聯繫。我想要做的最後一件事是將一個完全獨立的數據庫模式放在一起,只是爲了執行一些不適合我的POCO模型的任意SP。 –
我從來沒有說過人們不需要它。但是需要或不需要,它不在那裏。 – Tridus
你也可以查看這篇文章。這可能有助於至少第一步:在EF執行一個進程與參數4.1
我的代碼:
context.Database.SqlQuery<EntityType>(
"EXEC ProcName @param1, @param2",
new SqlParameter("param1", param1),
new SqlParameter("param2", param2));
我不知道這是否會幫助你,但這裏是如何我使用EF 4.1和DevArt驅動程序調用Oracle proc。這只是返回一個單一的值,但你可能會適應它返回多行。我有一個名爲P_SID.SID_PGet package.proc:
PROCEDURE SID_PGet(io_SID OUT varchar2) is
Begin
io_SID:=GetSID;
End;
下面是我如何把它和檢索的SID值:
var parameter = new Devart.Data.Oracle.OracleParameter("io_SID", Devart.Data.Oracle.OracleDbType.VarChar, ParameterDirection.Output);
this.Database.ExecuteSqlCommand("BEGIN P_SID.SID_PGet(:io_SID); END;", parameter);
var sid = parameter.Value as string;
return sid;
你好:我用下面的代碼 VAR RS =背景 。 Database.SqlQuery(「EXECUTE AuthenticateUser」)。ToList(); 看來工作,但有問題的視圖返回那裏作爲我的POCO類本人身份證它被定義爲列名「註冊ID」: [關鍵] [列(「註冊ID」) ] public long RegistryID {get;組; } 存儲過程返回的列數及其名稱應與poco類相同嗎? –
DotnetSparrow