Форум программистов, компьютерный форум, киберфорум
C#: WPF, UWP и Silverlight
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.67/9: Рейтинг темы: голосов - 9, средняя оценка - 4.67
1 / 1 / 0
Регистрация: 18.06.2021
Сообщений: 10

Исключение при добавлении записи в таблицу БД

29.03.2022, 12:44. Показов 2077. Ответов 25
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
При нажитии на кнопку insert , выдаёт исключение


Вот исключение
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
29.03.2022, 12:44
Ответы с готовыми решениями:

Обработать исключение при добавлении данных в таблицу Access
Подскажите пожалуйста как обработать исключение? Событие на кнопке, происходит добавление данных в таблицу в аксесе private...

Изменение записи в таблице при добавлении записи в другую таблицу
Есть две таблицы TProduct(товары) и TIncoming(приход) с полями "наименование" и "количество". Нужно, чтобы при добавлении строки в...

Как сделать при добавлении записи, в таблицу примка, ее идприемки записывался в таблицу ремонт и испытание
Как сделать при добавлении записи, в таблицу примка, ее идприемки записывался в таблицу ремонт и испытание. Т.е я добавляю приемку...

25
 Аватар для Andrey-MSK
3397 / 2283 / 388
Регистрация: 14.08.2018
Сообщений: 7,758
Записей в блоге: 4
04.04.2022, 16:22
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от kotelok Посмотреть сообщение
сгенерированный запрос с выборкой только тех полей, который запрошены для материализации
Ну как бы отражение идёт всё равно на класс, так что грузятся все поля, которые присутствуют в классе. И в ADO тоже самое, пишешь метод выборки под определённый класс. Просто в EF кода меньше будет вот и вся выгода. Но если в контексте у вас много таблиц, то при каждом запросе в виде using(... new DbContext()...) ждать будете долговато создание контекста, а в ADO только соединение подождать...
Ну везде есть плюсы и минусы
1
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16166 / 11286 / 2892
Регистрация: 21.04.2018
Сообщений: 33,175
Записей в блоге: 2
04.04.2022, 16:30
Цитата Сообщение от Andrey-MSK Посмотреть сообщение
Ну везде есть плюсы и минусы
Так и есть.

Цитата Сообщение от Andrey-MSK Посмотреть сообщение
то при каждом запросе в виде using(... new DbContext()...) ждать будете долговато создание контекста, а в ADO только соединение подождать...
Долго, вроде, только при первом создании DbContext.
В повторных не замечал лагов.
0
1341 / 920 / 265
Регистрация: 08.08.2014
Сообщений: 2,775
04.04.2022, 18:01
Цитата Сообщение от Andrey-MSK Посмотреть сообщение
Ну как бы отражение идёт всё равно на класс, так что грузятся все поля, которые присутствуют в классе.
Так нет же. EF Core в этом плане весьма умён. Если EF-сущность содержит 40 полей (таблица БД), а в LINQ-запросе при проекции этой сущности в маленький DTO запрашиваются только 4 из них, то конструктор запросов это поймёт, и сделает 'select' к базе с указанием только этих 4-х полей.

Добавлено через 2 минуты
Цитата Сообщение от Andrey-MSK Посмотреть сообщение
то при каждом запросе в виде using(... new DbContext()...) ждать будете долговато создание контекста
Нет, долго будет только в начале, пока контекст "прогревается". Т.е. если я запускаю сервис, в котором используется EF-контекст на полторы сотни таблиц, то любой первый запрос может занимать несколько секунд. Все последующие создания контекстов и запросы выполняются со штатной скоростью. Т.е. EF будет абсолютно неуместен в каких-нибудь сервисах, которые запускают по требованию, отрабатывают и выгружаются. Там да, эта задержка будет критична.
1
 Аватар для Andrey-MSK
3397 / 2283 / 388
Регистрация: 14.08.2018
Сообщений: 7,758
Записей в блоге: 4
05.04.2022, 08:12
Цитата Сообщение от kotelok Посмотреть сообщение
в маленький DTO
Я это и имел ввиду, именно этот класс и отражает данные из запроса и сколько в нём полей, столько и будет заполнено. А сущность - это сущность, это вся таблица в БД. Для ADO тоже пишутся классы таблиц, но и вместе с ними пишется куча классов для нужных запросов. Всё как и в EF.
0
1341 / 920 / 265
Регистрация: 08.08.2014
Сообщений: 2,775
05.04.2022, 14:42
Цитата Сообщение от Andrey-MSK Посмотреть сообщение
Всё как и в EF
Но на деле ведь огромная разница в объёме (и размазанности) кода, а значит и в объёме кропотливой работы, а значит и в повышенных рисках на ошибку из-за необходимости весь этот однотипный код каждый раз руками прописывать, а значит и в болезненном нежелании добавлять новый функционал, т.к. минимальная правка требует помнить о необходимости согласованно подкорректировать группу файлов (в которых ещё и компилятор ничем не поможет, т.к. текст SQL-запросов он вряд ли сопоставит с той сущностью, куда потом выгружается результат).

Т.е. на EF можно написать:
C#
1
2
3
4
5
6
7
8
9
10
    var invs = ctx
        .Invoices
        .Where(inv => inv.Company.CityId == 24)
        .Select(inv => new
        {
            inv.InvId,
            inv.Num,
            inv.Total
        })
        .ToList();
И всё, EF за тебя сделает:
1. Построение запроса (с учётом join на Company, с учётом только указанных в мапинге полей).
2. Создание 'DbCommand' и параметров к ней.
3. Заполнение коллекции экземплярами анонимного типа (или конкретного DTO).

И если в будущем потребуется в эту выборку добавить ещё одно поле, то достаточно будет просто добавить одно поле в select-блок. Даже если оно находится где-то в мастер-таблице на несколько уровней выше (т.к. EF сам достроит join до нужного уровня просто по факту наличия 'inv.Company.City.Name' в select-блоке).
1
 Аватар для Andrey-MSK
3397 / 2283 / 388
Регистрация: 14.08.2018
Сообщений: 7,758
Записей в блоге: 4
05.04.2022, 15:03
Цитата Сообщение от kotelok Посмотреть сообщение
то достаточно будет просто добавить одно поле в select-блок
Это если тип анонимный, а если DTO, то придется писать новый класс.
По поводу кучи кода в ADO согласен. Я обычно пишу методы для БД один раз - отладил запрос в SSMS, написал метод доступа с отражением на нужный класс и всё, более его не меняю. Если в БД что-то добавляется, то добавляю еще класс и метод доступа для него.
А вообще стараюсь делать всё в БД - VIEW, SP, UDF. И даже если что-то там кардинально поменяется (что маловероятно по структуре БД, но практически постоянно в компоновке и оптимизации запросов в объектах БД), то объекты БД вернут те же поля как и было ранее, то бишь методы доступа не меняются, а продолжают получать нужные данные из БД как и было до этого.
У меня в БД до сих пор имена полей в таблицах да и названия таблиц на транслите, как сделал 5 лет назад, так и работает, хотя уже много там чего перековырял для оптимизации запросов, но структуру самой БД не трогал, как было так и осталось. Хочется уже поменять, но лень, как прикинешь сколько всего переделывать...

В общем кому как
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
05.04.2022, 15:03

Ошибка при добавлении записи в таблицу
Ребят ситуация в следующем, необходимо создать клиент к базе. И вот почти сразу я столкнулся с проблемой , казалось бы простой, эта...

UpdateException при добавлении записи в таблицу БД
Делаю форму на добавление с подключенной БД, на основе которой создана EDM модель Не могу добавить данные, точнее он не сохраняет данные...

Ошибка при добавлении записи в таблицу!!!
Доброго времени суток! Тема моей курсовой разработка приложения для предметной области "Учёт товара в магазине". ...

Ошибка при добавлении записи в таблицу
Всем доброго времени суток, я ввожу данные в таблицу напрямую и возникает при некотором количестве записей ошибка. Срабатывает не кое...

Ошибка при добавлении записи в таблицу.
Здрасьте! Такое дело. В навикате создал процедуру добавления записей в таблицу. В самом навикате тестил, вто работает отлично, но вот когда...


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

Или воспользуйтесь поиском по форуму:
26
Ответ Создать тему
Новые блоги и статьи
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru