WebAPI Удаление записи базы данных с использованием Dapper и DevExtreme - PullRequest
0 голосов
/ 06 сентября 2018

Я создал WebAPI, используя Asp .Net Core 2 с фронтом DevExtreme, отображающим информацию из моей базы данных в сетку данных. У меня есть возможность добавлять новые строки в мою базу данных, но у меня проблема с удалением любых строк через интерфейс.

Это то, что я имею до сих пор.

Более логичная логика:

public void Remove(int id)
{
    var sql = @"DELETE FROM [dbo].[MyTable]   
                WHERE ID = @ID";

    using (var dbConnection = Connection)
    {
        dbConnection.Open(); 
        dbConnection.Execute(sql, new { ID = id });   
    }
}

Я тестировал приведенный выше код SQL непосредственно в SSMS, и он работает.

Далее, мой контроллер веб-API имеет следующий метод HttpDelete:

[HttpDelete]
public IActionResult Delete(int id)
{
    var record = _bukRepository.FindById(id);

    _bukRepository.Remove(record.ID);
    return Ok();
}

Наконец, я выполняю рендеринг через jQuery, и я вызвал мой метод удаления следующим образом:

$(function () {
    var url = "http://" + window.location.host;
    $("#grid").dxDataGrid({
        dataSource: DevExpress.data.AspNet.createStore({
            key: "ID",
            loadUrl: url + "/api/WebAPI/",
            insertUrl: url + "/api/WebAPI/",
            updateUrl: url + "/api/WebAPI/",
            deleteUrl: url + "/api/WebAPI/"
        }),
        remoteOperations: true,
        columns: [
            {
                dataField: "ID",
                caption: "ID"
            }

        ],
        editing: {
            allowUpdating: true,
            allowDeleting: true,
            allowAdding: true
        }
    }); 
});

Когда я запускаю свой код и нажимаю кнопку удаления, мои методы получают удар, но он возвращается как Not found, так как идентификатор не передается из пользовательского интерфейса в мой метод удаления.

что мне не хватает?

1 Ответ

0 голосов
/ 06 ноября 2018

Вам необходимо присвоить имя параметру «Удалить» key, так как это имя используется на клиенте для передачи ключа записи при удалении записи:

[HttpDelete]
public IActionResult Delete(int key)
{
    var record = _bukRepository.FindById(key);

    _bukRepository.Remove(record.ID);
    return Ok();
}
...