我试图从数据库上下文对象(使用Entity Framework 6.1.1)调用一个动态SQL存储过程,通过一个表来获取内容,以便填充一个GridView
控件.我无法检索数据.
下面是存储过程.这是一个关于存储过程中SQL注入的学生演示,所以I KNOW这是可注入的,很好.
ALTER PROCEDURE dbo.SearchProducts
@SearchTerm VARCHAR(max)
AS
BEGIN
DECLARE @query VARCHAR(max)
SET @query = 'SELECT * FROM dbo.Products WHERE Name LIKE ''%' + @SearchTerm + '%'''
EXEC(@query)
END
然后我用来执行存储过程的C#代码是:
var db = new MyEntities();
var TEST_SEARCH_TERM = "product";
var result = db.SearchProducts(TEST_SEARCH_TERM);
MyGridView.DataSource = result;
MyGridView.DataBind();
在VisualStudio的数据库资源管理器中执行时,存储过程工作正常.但是当在运行的ASP中执行时.NET应用程序中,我在DataBind()
方法中得到一个异常,因为result
返回-1
,而不是IEnumerable
DataSet
,其中包含存储过程的SELECT生成的对象.
如何检索数据并填充我的GridView
?