2015-07-31 4 views
0

Я довольно новичок в этом материале веб-API, и я пытаюсь настроить простые HTTP-запросы к локальной базе данных на своем компьютере. У меня есть запрос GET, который выглядит следующим образом:Запрос HttpPut на C#

[HttpGet] 
[Route("")] 
[Route("{ID:int}")] 
public IQueryable<ListTable> Get(int id = -1) 
{ 
    if(id == -1) 
     return db.ListTables; 
    else 
     return db.ListTables.Where(lt => lt.ID == id); 
} 

Это просто возвращает все элементы в базе данных или один элемент, относящийся к указанному идентификатору. Теперь я пытаюсь сделать запрос на отправку, где я могу добавить новый элемент в базу данных или отредактировать элемент, связанный с определенным идентификатором. Я пытался что-то вроде этого:

[HttpPut] 
[Route("{ID:int}")] 
[Route("{ID:int}/{TITLE:string}")] 
[Route("{ID:int}/{TITLE:string}/{DESCRIPTION:string}")] 
public ListTable Put(int id = -1, string title = null, string descr = null) 
{ 
    //if ID == -1 add a new item to the DB 
    //else add title and description to the item with the specified ID 
} 

Я немного не уверен в том, чтобы добавить новый элемент в базу данных и сохраните изменения. Я пробовал что-то вроде db.ListTables.Add(new ListTable()) и db.SaveChanges(), но они, похоже, ничего не спасли, потому что, когда я снова вызвал метод Get(), нового элемента не было.

+1

вы уверены, что тело метода выполняет – MstfAsan

+0

я думаю, не есть ли легко?. способ убедиться в этом? –

+0

Я использую расширение Postman для Chrome, чтобы вызвать эти методы, поэтому я не понимаю, почему тело не будет выполняться. –

ответ

1

Вам потребуется новый до экземпляра объекта добавить [ListTable], а затем добавить его в контексте базы данных (при условии, что это db на основе вашего GET примера. После того, как вы добавите его в контексте, то вы .SaveChanges() - Я предполагаю, что ваш ListTable объект имеет столбцы, называемые Title и Description (изменить эти строки к тому, что вы их называли):

ListTable listTableToAdd = new ListTable() 
{ 
    Title = title, 
    Description = descr 
} 
db.ListTables.Add(listTableToAdd); 
db.SaveChanges(); 
+0

Хмм, это в основном то, что я сделал с немного другим синтаксисом. У меня должно быть что-то неправильное где-то еще. У меня также есть предупреждение, что 'db.SaveChanges()' является недостижимым кодом ... Даже не знаю, как это возможно. –

+0

Собственно проигнорируйте этот первый комментарий. При попытке 'db.SaveChanges()' я получаю «Проверка не выполнена для одного или нескольких объектов». –

+0

Игнорировать снова! Я решил это. Одно из моих обязательных полей по умолчанию было ошибкой null =/Stupid. –

0

Вам необходимо установить свойства после new ListTable(). Что-то вроде new ListTable() { Title = title, ... }

+0

Действительно ли это необходимо – MstfAsan

+0

Хорошо, но это не сохраняет его в базе данных, когда я вызываю метод get после этого, его нет, а вызов 'db.SaveChanges()', похоже, ничего не делает. Я сохраняю его неправильно? –

 Смежные вопросы

  • Нет связанных вопросов^_^