Возникла проблема при написании приложения: GET и DELETE операции проходят, а PUT и POST нет.
Есть база данных Cinema в MS SQL SERVER и таблица film. Она имеет такую структуру: id - fname - country - flength - fyear - genre. И хранимые процедуры: addFilm, deleteFilm, getAllFilms и updateFilm. В asp.net core написано простенькое приложение web api, которое должно выполнять CRUD операции с этой таблицей. Но выполняются только GET и DELETE! Привожу код DataController.cs. Помогите, пожалуйста! Не могу понять в чём проблема.
[Produces("application/json")]
[Route("api/data")]
public class DataController : Controller
{
string connectionString = ConnectionString.CName;
// GET api/data
[HttpGet]
public List<FilmsModel> Get()
{
List<FilmsModel> Films = new List<FilmsModel>();
using (SqlConnection con = new SqlConnection(connectionString))
{
SqlCommand cmd = new SqlCommand("getAllFilms", con);
cmd.CommandType = CommandType.StoredProcedure;
con.Open();
SqlDataReader rdr = cmd.ExecuteReader();
while (rdr.Read())
{
FilmsModel film = new FilmsModel();
film.id = Convert.ToInt32(rdr["id"]);
film.fname = rdr["fname"].ToString();
film.country = rdr["country"].ToString();
film.flength = rdr["flength"].ToString();
film.fyear = rdr["fyear"].ToString();
film.genre = rdr["genre"].ToString();
Films.Add(film);
}
con.Close();
}
return Films;
}
// GET api/data/5
[HttpGet("{id}")]
public FilmsModel Get(int id)
{
FilmsModel film = new FilmsModel();
using (SqlConnection con = new SqlConnection(connectionString))
{
string sqlQuery = "SELECT * FROM Cinema.dbo.film WHERE id = " + id;
SqlCommand cmd = new SqlCommand(sqlQuery, con);
con.Open();
SqlDataReader rdr = cmd.ExecuteReader();
while (rdr.Read())
{
film.id = Convert.ToInt32(rdr["id"]);
film.fname = rdr["fname"].ToString();
film.country = rdr["country"].ToString();
film.flength = rdr["flength"].ToString();
film.fyear = rdr["fyear"].ToString();
film.genre = rdr["genre"].ToString();
}
}
return film;
}
// POST api/data
[HttpPost]
public void Post([FromBody]FilmsModel film)
{
using (SqlConnection con = new SqlConnection(connectionString))
{
SqlCommand cmd = new SqlCommand("addFilm", con);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@fname", film.fname);
cmd.Parameters.AddWithValue("@country", film.country);
cmd.Parameters.AddWithValue("@flength", film.flength);
cmd.Parameters.AddWithValue("@fyear", film.fyear);
cmd.Parameters.AddWithValue("@genre", film.genre);
con.Open();
cmd.ExecuteNonQuery();
con.Close();
}
}
// PUT api/data/5
[HttpPut("{id}")]
public void Put([FromBody]FilmsModel film)
{
using (SqlConnection con = new SqlConnection(connectionString))
{
SqlCommand cmd = new SqlCommand("updateFilm", con);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@id", film.id);
cmd.Parameters.AddWithValue("@fname", film.fname);
cmd.Parameters.AddWithValue("@country", film.country);
cmd.Parameters.AddWithValue("@flength", film.flength);
cmd.Parameters.AddWithValue("@fyear", film.fyear);
cmd.Parameters.AddWithValue("@genre", film.genre);
con.Open();
cmd.ExecuteNonQuery();
con.Close();
}
}
// DELETE api/data/5
[HttpDelete("{id}")]
public void Delete(int id)
{
using (SqlConnection con = new SqlConnection(connectionString))
{
SqlCommand cmd = new SqlCommand("deleteFilm", con);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@id", id);
con.Open();
cmd.ExecuteNonQuery();
con.Close();
}
}
}
Вопрос решен. Я неправильно отправлял запросы. Всё "заработало" после того, как я начал отправлять запросы через PowerShell, как показано в этой статье. Спасибо всем откликнувшимся!
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
метод Update в c# выполняет определённый ряд действий каждый кадрПредроложим, что я хочу сделать медленное увеличение предмета
Всем привет, вопрос такого рода, в документации написано, что при записи в поле с типом данных CHAR(длинна), поле дополняется после текста пробелами,...
Подскажите пожалуйста, как в конструкторе Visual Studio можно сделать такую таблицу и добавлять в неё результаты работы программы?
Я создаю подобие серверного приложения с помощью TCPListenerКогда клиент подключается к серверу с помощью TCPClient, сервер должен определить адрес...