Я пишу относительно простое приложение Windows Form, которое должно выступать в качестве внешнего интерфейса (добавление, редактирование, удаление записей) для имеющейся у нас базы данных SQL Server. У меня есть TextBox для каждого столбца в таблице и ListBox, чтобы перечислить все записи (по имени и фамилии). Текстовые поля заполняются данными о том, какая запись выбрана в списке.
У меня возникли трудности с обновлением записей в БД с использованием BindingSource. Вот код, который я сейчас (безуспешно) использую:
DBDataContext dc = new DBDataContext();
Entrys e = (Entry)EntryBindingSource.Current;
dc.Entrys.Attach(e);
dc.Entrys.InsertOnSubmit(e);
dc.SubmitChanges();
С помощью этого кода я получаю исключение, что запись уже существует, что имеет смысл, но я не знаю, как сказать, что я хочу обновить эту запись новыми данными.
Я знаю, как вы можете вручную обновить каждую запись, но поскольку у меня есть 10 различных столбцов, это было бы относительно большим деревом if / else (проверка, отличается ли значение каждого текстового поля от значения BindingSource для этой записи). Удаление и повторное добавление этой записи кажется мне плохой формой. Я уверен, что есть лучший способ сделать это.