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