Веб-матрица и хранимые процедуры - PullRequest
5 голосов
/ 15 сентября 2010

Я дурачусь с WebMatrix, и до сих пор лучший способ, которым я понял, как использовать хранимые процедуры с Razor / WebMatrix, выглядит так -

@if (IsPost) {

   var LinkName = Request["LinkName"];
   var LinkURL  = Request["LinkURL"];

   string sQ = String.Format("execute dbo.myprocname @LinkName=\"{0}\",
 @LinkURL=\"{1}",LinkName, LinkURL);

   db.Execute(sQ);
}

Заметьте, я не делаю никакой проверки SQL-инъекций или чего-то подобного, что, я думаю, было бы крайне необходимо. Я что-то упустил?

Ответы [ 2 ]

6 голосов
/ 16 сентября 2010

Метод Execute принимает параметры.

@if (IsPost) {
  var LinkName = Request["LinkName"];
  var LinkURL = Request["LinkURL"];
  string SQL = "exec dbo.myprocname @0, @1";
  db.Execute(SQL, LinkName, LinkURL);
}

Обновление: Я обновил свой ответ, чтобы параметры для sproc были заданы заполнителями, которые нумеруются, а не именуются.

3 голосов
/ 17 октября 2012

хорошо, это то, что я нашел, проще всего, и вы можете использовать именованные параметры.Это означает, что если ваша хранимая процедура имеет несколько необязательных параметров, вы можете передать только те, которые вам нужны или которые вы хотите передать.

@{
    var db = Database.Open("your database name");
    var param1 = "informationhere";
    var param2 = "informationhere";
    // or var param2 = 15247 (no quotes necessary if param is an integer datatype)
    var procRows = db.Query("Exec dbo.procName @RealParameterName1=@0, @RealParameterName2=@1", param1, param2);
}

<table>
@foreach( var procRow in procRows )
{
    <tr>
        <td>@procRow.ColumnName1</td>
        <td>@procRow.ColumnName2</td>
        <td>@procRow.ColumnName3</td>
        //etc
    </tr>
}    
</table>
...