Обновление данных с помощью LINQ и BindingSource - PullRequest
0 голосов
/ 23 ноября 2010

Я пишу относительно простое приложение 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 для этой записи). Удаление и повторное добавление этой записи кажется мне плохой формой. Я уверен, что есть лучший способ сделать это.

1 Ответ

0 голосов
/ 24 ноября 2010

Я очень сомневаюсь, что вы делаете это правильно. Используя Linq, вы должны сначала попытаться получить вашу запись / проверить ее существование, затем внести изменения, а затем только отправить их. Обновление таким способом должно быть довольно простым. вызов "InsertOnSubmit", на мой взгляд, очень подозрительный.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...