为了账号安全,请及时绑定邮箱和手机立即绑定

如何在存储过程中使用DbContext.Database.SqlQuery<TElement>

如何在存储过程中使用DbContext.Database.SqlQuery<TElement>

喵喵时光机 2019-07-16 18:10:00
如何在存储过程中使用DbContext.Database.SqlQuery<TElement>(SQL,params)?EF规范第一条CTP 5我有一个具有三个参数的存储过程,我一直试图使用以下方法返回结果:context.Database.SqlQuery<myEntityType>("mySpName", param1, param2, param3);一开始我试着用SqlParameter对象,但这不起作用,并抛出了一个SqlException带着以下信息:过程或函数“mySpName”期望参数‘@parp 1’,该参数没有提供。那么,我的问题是,如何在需要参数的存储过程中使用此方法?谢谢。
查看完整描述

3 回答

?
呼如林

TA贡献1798条经验 获得超3个赞

您应该以下方式提供Sql参数实例:

context.Database.SqlQuery<myEntityType>(
    "mySpName @param1, @param2, @param3",
    new SqlParameter("param1", param1),
    new SqlParameter("param2", param2),
    new SqlParameter("param3", param3));


查看完整回答
反对 回复 2019-07-16
?
智慧大石

TA贡献1946条经验 获得超3个赞

此外,还可以使用“SQL”参数作为格式说明符:

context.Database.SqlQuery<MyEntityType>("mySpName @param1 = {0}", param1)


查看完整回答
反对 回复 2019-07-16
?
慕尼黑的夜晚无繁华

TA贡献1864条经验 获得超6个赞

此解决方案(仅适用于SQLServer 2005)

你们是救生者,但正如@DanMork所说,你们需要加入高管。把我绊倒的是:

  • 在proc名称之前的“EXEC”
  • 副词之间的逗号
  • 删除Param定义上的“@”(但不确定该位是必需的)。

:

context.Database.SqlQuery<EntityType>(
    "EXEC ProcName @param1, @param2", 
    new SqlParameter("param1", param1), 
    new SqlParameter("param2", param2));


查看完整回答
反对 回复 2019-07-16
  • 3 回答
  • 0 关注
  • 1816 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信