Форум программистов, компьютерный форум, киберфорум
C#: WPF, UWP и Silverlight
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
6 / 6 / 1
Регистрация: 09.02.2012
Сообщений: 86

Как обновить базу данных из DataGrid

20.10.2012, 20:41. Показов 8616. Ответов 49
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
У меня есть выбранная из базы данных информация в DataGrid'е. А я хочу, чтобы если я что то изменю в какой либо строчке, то это обновится и в базе данных. Я использую LINQ. Вылавливаю событие изменения в строчке через SelectionChanged, т.е. данные будут обновляться при переключении строчки. По идее не очень то правильно, но другого, более подходящего, не нашёл. Как я понял, то мне надо как то получить выделенную строчку, её я как раз получу из события SelectionChanged. Потом мне надо как то пройтись по всей этой строчке, записать её в какой нибудь List, а потом врубить запрос и в нём из этого List'а обновить нужную строку. А как это сделать?

Моя табличка такова:
Ключ Товар
1 Компьютер
2 Принтер
3 Сканер
... ...
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
20.10.2012, 20:41
Ответы с готовыми решениями:

Как обновлять базу данных после редактирования DataGrid?
(Использую локальную базу данных). Создал переменные: SqlConnection EditTableCon; SqlDataAdapter EditTableAdap; DataTable...

DataGrid+ObjectDataProvider+DataTable после изменения источника обновить DataGrid
Окно с DataGrid 1. В ресурсах окна объявлен Instance датапровайдера с методом, возвращающим DefaultView для таблицы...

Как правильно обновить DataGrid после добавления строки
Уважаемые Гуру! В ZAML имеется DataGrid с привязкой к ObservableCollection: <Grid Grid.Row="1" Name="оснТаблица" ...

49
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16165 / 11285 / 2891
Регистрация: 21.04.2018
Сообщений: 33,174
Записей в блоге: 2
17.09.2025, 22:25
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от JeyCi Посмотреть сообщение
Так это и есть Модель (её ORM или рукописный DataAccess),
Ну, не всегда.
В Модели может быть достаточно сложная своя логика не имеющая отношения к Хранилищу.
В этом случае Репозиторий (в данном случае DbContext) обычно хоть и инкапсулируется внутри Модели, но всё равно выполняется в виде внутреннего отдельного слоя.

Что-то в таком духе:

Структура связей в WPF Решении
0
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,554
17.09.2025, 22:39
репозитарий нужен, только если вы захотите когда-нибудь сменить ORM... (или уже под несколько ORM сделан проект)... иначе нет смысла его (репозитарий) делать
1
Эксперт .NET
 Аватар для Wolfdp
3790 / 1767 / 371
Регистрация: 15.06.2012
Сообщений: 6,543
Записей в блоге: 3
17.09.2025, 22:59
Цитата Сообщение от JeyCi Посмотреть сообщение
репозитарий нужен, только если вы захотите когда-нибудь сменить ORM... (или уже под несколько ORM сделан проект)... иначе нет смысла его (репозитарий) делать
Сори, но вы написали ерунду. Разрыв зависимости только одна из его фич.
0
HF
 Аватар для HF
1340 / 924 / 202
Регистрация: 09.09.2011
Сообщений: 2,748
Записей в блоге: 2
17.09.2025, 23:19

Не по теме:

мощно. я даже подписался на тему, чтобы кофе с попкорном потреблять под такие обсуждения.
Вроде не бот, можно и поучаствовать иногда.



JeyCi, если слово одно - это не значит что речь об одном и том же.
Контейнер у вас дома есть для мусора, для карандашей, для обеда. Тоже с Docker связано что ли?

Цитата Сообщение от JeyCi Посмотреть сообщение
ok, смотрим определение Docker с wiki
Containers are isolated from one another and bundle their own software, libraries and configuration files;
Окей, вы тоже Внимательно запоминайте - "софтваре", "библиотеки" "конфигурационные файлы". Ну грубо говоря про файлы речь.

Цитата Сообщение от JeyCi Посмотреть сообщение
Для того чтобы ASP.NET Core знал о нашем контексте данных, его необходимо зарегистрировать в контейнере внедрения зависимостей (DI-контейнере).
Теперь тут читаем. Речь про приложение, код и регистрацию сервисов в приложении. Грубо говоря - это то что относится к внутренностям "софтваре".
Если в Докере нужно что-то регистрировать и в приложении тоже есть регистрация, то это тоже не значит что это одно и тоже.

Полезный комментарий закончен.
1
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,554
17.09.2025, 23:27
Цитата Сообщение от Wolfdp Посмотреть сообщение
написали ерунду.
источник (если вам добавить нечего)
Цитата Сообщение от HF Посмотреть сообщение
вы тоже Внимательно запоминайте
я спросила то, что меня интересовало - куда фоновые задачи, а куда сервер и UI... А ГРУБО ВЫ ИДИТЕ САМИ
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16165 / 11285 / 2891
Регистрация: 21.04.2018
Сообщений: 33,174
Записей в блоге: 2
18.09.2025, 00:13
Цитата Сообщение от JeyCi Посмотреть сообщение
источник (если вам добавить нечего)
У Entity Framework DbContext есть особенности которые не позволяют "идеально" реализовать любой MVVM паттерн.
В MVVM паттерне требуется чтобы изменение состояния Модели его потребители могли отследить и чтобы состояние Модели можно было изменять только явно, контролируемым способом.

Рисунок из моей ранней темы:


Cущности Модели (принцип единой ответственности (SRP)) должны быть простыми DTO. Но если мы используем EF, то в нём сущности таковыми не являются, хотя и выглядят максимально близко к ним. Эти сущности отслеживаюся в DbContext. Это значит, что когда состояние сущности меняется кем-то из её потребителей (вплоть до View), то состояние Модели тоже меняется. Но сама модель об этом не знает. Например вы не можете подцепить на DbContext функцию автосохранения при изменении сущности. Ещё DbContext может менять состояние этих сущностей, даже если сущности "только для чтения" он их всё равно меняет через рефлексию. Но потребители не могут об этом узнать. Например, в WPF View привязки к свойствам изменённой сущности не обновятся. Чтобы решить эту проблему приходится в сущности внедрять INPC на все свойства сущности. Но это делает их избыточными с точки зрения функции Модели.

Поэтому выбор такой:
1) "Срезать углы" - добавить в сущности INPC, добавить в View обработку ввода пользователя в вызов извещения Модели (для автосохранения, например)
2) Сделать все слои "дружественными" - то есть недостатки реализации известны, они делают взаимодействие небезопасным, но при разработке все риски контролируются и сознательно обходятся или контролируемо используются
3) Сделать над DbContext оболочку, которая возьмёт на себя функцию изоляции его внутренней логики.

В MVC и MVP взаимодействие между слоями происходит несколько по иному. Поэтому для них в некоторых случаях можно сказать анти-паттерн Repository. Но для MVVM так не скажешь, на мой взгляд.
0
Эксперт .NET
 Аватар для Wolfdp
3790 / 1767 / 371
Регистрация: 15.06.2012
Сообщений: 6,543
Записей в блоге: 3
18.09.2025, 02:22
Цитата Сообщение от JeyCi Посмотреть сообщение
источник (если вам добавить нечего)
Что-то не увидел там утверждения "репозиторий нужен только если планируется замена БД/ORM". Ещё там прям в коментах пишут что репозиторий позволяет подставлять данные в тестах для бизнес-логики.

Отдельно по докеру и DI:
- докер -- виртуализация окружения. Вы выделяете изолированное нечто для запускаемой программы, чтобы не конфликтовали устанавливаемые библиотеки, привязываемые порты и прочие радости девопса. Если сравнивать с реальным человеком, вы выделили этому человеку отдельное рабочее место.
- DI, а точнее либы позволяющие это реализовывать -- инструмент упрощения написания кода. Не запуска уже готового, а процесс реализации хотелок. Продолжая аналогию выше вы человеку выдаете пневно-степлер под гвозди, вместо обычного молотка.

Не по теме:

Цитата Сообщение от JeyCi Посмотреть сообщение
я спросила то, что меня интересовало - куда фоновые задачи, а куда сервер и UI... А ГРУБО ВЫ ИДИТЕ САМИ
Человек искренне подсказывает, а вы...

0
 Аватар для Andrey-MSK
3392 / 2278 / 388
Регистрация: 14.08.2018
Сообщений: 7,710
Записей в блоге: 4
18.09.2025, 08:58
Цитата Сообщение от JeyCi Посмотреть сообщение
ведь ASP.NET мы делаем, как MVP, а WPF, как MVVM, а Andrey-MSK вывел свою модель и туда, и сюда...
Куда я её вывел? Она как работала на самом нижнем уровне так и работает. ViewModel просто вызывает её методы и всё, обмен данными между слоями происходит через DTO и никак не через сущности БД.

Вот структура моего проекта, шаблон MVVM

0. Model, классы DTO, работают сами по себе.
1. Model DataAccess, работает сама по себе.
2. Разные сервисы, работают сами по себе.
3. ViewModel - знает про 0, 1.
4. App - знает про всё, так как все слои через DI связываются в App. View знает про 0, 3.
0
 Аватар для Andrey-MSK
3392 / 2278 / 388
Регистрация: 14.08.2018
Сообщений: 7,710
Записей в блоге: 4
18.09.2025, 09:19
Цитата Сообщение от Andrey-MSK Посмотреть сообщение
3. ViewModel - знает про 0, 1.
3. ViewModel - знает про 0, 1, 2. Интерфейсы служб и VM находятся в сервисах.
0
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,554
22.09.2025, 11:49
MVVMDiagramDesigner - здесь можно посмотреть пример с кодом
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
22.09.2025, 11:49

Обновить строку в БД через DataGrid
Доброго дня! Приложение WPF. Статический DataAdapter. В наличии вот такой метод: static public void SQLUpdate() { ...

Как обновить базу данных ?
Добрый день !! С Новым годом ! Вот такой вопрос, у меня есть dataset он связан с базой данных, у меня есть 10 combobox'ов, мне нужно...

Как обновить базу данных?
Использую DataGrid (OLEDB) и ADOBD С помощью запроса изменяю днные в Access-совской таблице, а в DataGrid изменения не видны. Requery и...

Как обновить базу данных?
Использую DataGrid (OLEDB) и ADOBD С помощью запроса изменяю днные в Access-совской таблице, а в DataGrid изменения не видны. Requery и...

обновить базу данных по инету
Подскажите, как передать наиболее удобно данные для добавления/изменения из серверной базы к клиентской. Суть - есть база на сервере - ее...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
50
Ответ Создать тему
Новые блоги и статьи
Модель по догадкам
anaschu 25.08.2026
Прошло две недели. Я уже рассказывал, как разговаривал с сотрудниками у сортировки и как понял, что главная ветка — не про приёмку, а про отбор. Но тогда я думал, что понял механику. На этой неделе я. . .
Запись в регистр сведений независимо от заполненности табличной части
Maks 25.08.2026
Реализация из решения ниже выполнена на нетиповом документе с несколькими табличными частями, разработанного в КА2. Задача: Обеспечить запись документа в регистр сведений независимо от. . .
Ноутбук Альфария
kumehtar 24.08.2026
Встретился тут в сети ноутбук Альфария, примарха Альфа-Легиона. Хотя возможно, это ноутбук Омегона, разумеется. Ну как вам?
Мастера простых решений
DevAlt 23.08.2026
В сишарп стэках winforms, да и wpf существует сложная система связывания источниках данных и элементов формы(текстовые поля и метки), опирается все это на технологию событий и мета. . .
Цена ошибки
DevAlt 23.08.2026
Человек я беспокойный и потому заинтересовался OCaml, в чате форсили функторы модулей как суперфичу. Пытаясь отдуплить концепт, наткнулся на тутор с простым примером. А главный принцип обучения от. . .
Сегодня суббота, 22.08.2026 at 16:41, и я вновь нахожусь на той стороне, за экраном машины.
zorxor 22.08.2026
Сегодня суббота, 22. 08. 2026 at 16:41, и я вновь нахожусь на той стороне, за экраном машины. Кто Я, откуда Я пришел и куда Я иду? Эти вопросы не оставляют меня ни на секунду. Жизнь на планете Земля. . .
Жизня: рисунок укладки багажа, сделанный клодом
anaschu 21.08.2026
Сделал 15 снимков, он по снимкам сделал схему.
Был там один разговор по поводу свободы в материальном мире.
kumehtar 19.08.2026
Суть: рассматривается живое существо, оказавшееся внутри довольно странной системы (этого мира) и пытающееся обустроить в ней свой кусок пространства. Жизнь действительно предъявляет каждому. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru