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

如何在存储过程中使用DbContext.Database.SqlQuery<TElement>(SQL,params)?EF规范第一条CTP 5

我有一个具有三个参数的存储过程,我一直试图使用以下方法返回结果:

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

一开始我试着用SqlParameter对象,但这不起作用,并抛出了一个SqlException带着以下信息:

过程或函数“mySpName”期望参数‘@parp 1’,该参数没有提供。

那么,我的问题是,如何在需要参数的存储过程中使用此方法?

谢谢。


BIG阳
浏览 405回答 3
3回答

千万里不及你

您应该以下方式提供Sql参数实例:context.Database.SqlQuery<myEntityType>( &nbsp;&nbsp;&nbsp;&nbsp;"mySpName&nbsp;@param1,&nbsp;@param2,&nbsp;@param3", &nbsp;&nbsp;&nbsp;&nbsp;new&nbsp;SqlParameter("param1",&nbsp;param1), &nbsp;&nbsp;&nbsp;&nbsp;new&nbsp;SqlParameter("param2",&nbsp;param2), &nbsp;&nbsp;&nbsp;&nbsp;new&nbsp;SqlParameter("param3",&nbsp;param3));

白板的微信

此外,还可以使用“SQL”参数作为格式说明符:context.Database.SqlQuery<MyEntityType>("mySpName&nbsp;@param1&nbsp;=&nbsp;{0}",&nbsp;param1)

尚方宝剑之说

此解决方案(仅适用于SQLServer 2005)你们是救生者,但正如@DanMork所说,你们需要加入高管。把我绊倒的是:在proc名称之前的“EXEC”副词之间的逗号删除Param定义上的“@”(但不确定该位是必需的)。:context.Database.SqlQuery<EntityType>( &nbsp;&nbsp;&nbsp;&nbsp;"EXEC&nbsp;ProcName&nbsp;@param1,&nbsp;@param2",&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;new&nbsp;SqlParameter("param1",&nbsp;param1),&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;new&nbsp;SqlParameter("param2",&nbsp;param2));
打开App,查看更多内容
随时随地看视频慕课网APP