Как сделать запрос на обновление данных в таблице
Есть в базе данных таблица Candies. В разрабатываемом приложении есть возможность обновить данные в этой таблице: пользователь вводит новые данные в текстбоксы и нажимает на кнопку, после чего строка обновляется. Вот модель данных этой таблицы:
internal class CandiesModel
{
public int id { get; set; }
public string type { get; set; }
public string name { get; set; }
public decimal weight { get; set; }
public decimal price { get; set; }
public string producer { get; set; }
public string country { get; set; }
public CandiesModel(int id, string type, string name, decimal weight, decimal price, string producer, string country)
{
this.id = id;
this.type = type;
this.name = name;
this.weight = weight;
this.price = price;
this.producer = producer;
this.country = country;
}
}
Но проблемы начинаются, когда необходимо поменять только несколько полей, а не все. Например нужно поменять только поле name, а остальные оставить как есть. В таком случае пользователю нужно ввести все поля. Но нужно сделать так, чтобы он ввёл только id и name, а остальные текстбоксы оставил пустыми. Как создать такой запрос? Использую паттерн репозиторий, вот код из репозитория(метод на обновление данных):
public void Update(CandiesModel item)
{
connection.Open();
SqlCommand updateCmd = new SqlCommand($"UPDATE Candies SET " +
$"CandyType = '{item.type}', CandyName = '{item.name}', CandyWeight = '{item.weight}', Price = '{item.price}'," +
$"Producer = '{item.producer}', Country = '{item.country}' WHERE CandyID = {item.id}", connection);
updateCmd.ExecuteNonQuery();
connection.Close();
}
item - это объект класса CandiesModel, который формируется из значений, введённых пользователем в текстбоксы вот таким образом:
CandiesModel updatedCandy = new CandiesModel(int.Parse(tbChangeId.Text), tbChangeType.Text, tbChangeName.Text,
decimal.Parse(tbChangeWeight.Text), decimal.Parse(tbChangePrice.Text), tbChangeProducer.Text, tbChangeCountry.Text);
//и тут уже вызывается метод из репозитория
candies.Update(updatedCandy);