1
A
回答
2
可以使用SqlQuery
using (var context = new MyContext())
{
var input = "a";
var result = context.Database.SqlQuery<int>("dbo.MyProc @param",
new SqlParameter("@param", input))
.FirstOrDefault();
// use result
}
@param
是輸入的名稱執行任意查詢和特效param('a','b')給你的SPROC,<int>
是結果的類型參數。您也可以綁定以相同方式返回的實體。我們已經參數input
避免SQL注入問題
var result = context.Database.SqlQuery<int>("dbo.MyProc @param",
new SqlParameter("@param", input))
.FirstOrDefault();
編輯,重新學生從存儲過程返回
與簡單的整數標量,Students
聲音就像在你的EF型號一流的實體,並應該創建爲DbSets
- 這樣你就可以使用LINQ
翻譯到Sql的所有功能。
但是,是的,如果你有一個PROC這已經爲你做過濾,你可以使用:
var students = context.Database.SqlQuery<Student>("dbo.MyProc @param",
new SqlParameter("@param", input)))
.ToList()
這將匹配匹配Student
性質所有列和約束他們。 或者,如果Student
已經是一個DbSet<>
的實體,有一個DbSet.SqlQuery
過載:
var students = context.Students.SqlQuery("dbo.MyProc @param",
new SqlParameter("@param", input)))
.ToList()
相關問題
- 1. EF代碼優先 -
- 2. EF代碼優先和IIS回收
- 3. EF代碼優先 - System.InvalidOperationException
- 4. MVC4 - EF代碼優先
- 5. 與EF代碼優先
- 6. 繼承EF代碼優先
- 7. 在EF代碼優先
- 8. EF代碼優先外鍵
- 9. EF 4.1代碼優先:執行存儲過程並返回IDENT
- 10. 從Ef代碼優先存儲Procdure中返回自定義表
- 11. EF代碼優先遷移不編譯
- 12. EF代碼優先:連接表爲空
- 13. EF 4.1代碼優先 - 添加列
- 14. EF代碼優先的對稱關係
- 15. 使用EF代碼優先本地extention
- 16. 刪除EF代碼優先列
- 17. EF 5 - 代碼優先遷移
- 18. EF代碼優先 - 無效的列名
- 19. EF代碼優先映射視圖
- 20. 許多在EF代碼優先
- 21. EF代碼優先 - 集合內
- 22. EF代碼優先:CreateIndex - 覆蓋索引
- 23. EF代碼優先 - 映射爲FK
- 24. EF代碼優先:型號配置
- 25. EF代碼優先和確認字段
- 26. 一個DbSet的EF代碼優先PluralizingTableNameConvention
- 27. EF代碼優先多對多更新
- 28. EF代碼優先與兩個DbContexts
- 29. MVC3:EF代碼優先和認證
- 30. Northwind在EF代碼優先的示例
謝謝您的幫助!如果我需要檢索大量數據「列表 SStudent = ....」,寫它還是需要做更多? –
KLN
@KLN你是否回覆了錯誤的東西?你的原始問題或這個答案都不與學生有任何關係。 –
@KLN學生聽起來像EF模型中的一流實體,應該創建爲「DbSets」 - 這樣您就可以將LINQ轉換的所有功能用於Sql。但是,是的,如果你有一個已經爲你過濾的PROC,你可以替換'result = context.Database.SqlQuery(...)'或'result = context.Students.SqlQuery(...)'if學生已經是一個擁有'DbSet <>'的實體。 –
StuartLC