Я пытаюсь получить содержимое таблицы с динамической хранимой процедурой SQL, вызванной из объекта контекста базы данных (используя Entity Framework 6.1.1), чтобы заполнить элемент управления GridView
. Я не могу получить данные.
Здесь хранится процедура. Это для студенческой демонстрации о SQL-инъекции в хранимых процедурах, поэтому я 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
Код С#, который я использую для выполнения хранимой процедуры:
var db = new MyEntities();
var TEST_SEARCH_TERM = "product";
var result = db.SearchProducts(TEST_SEARCH_TERM);
MyGridView.DataSource = result;
MyGridView.DataBind();
При выполнении в Проводнике базы данных в Visual Studio хранимая процедура работает нормально. Но когда выполняется в запущенном приложении ASP.NET, я получаю исключение в методе DataBind()
, потому что result
возвращает -1
вместо IEnumerable
DataSet
, содержащий объекты, полученные из хранимой процедуры SELECT.
Как я могу получить данные и заполнить свой GridView
?