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

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

29.03.2022, 12:44. Показов 2073. Ответов 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,749
Записей в блоге: 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,749
Записей в блоге: 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,749
Записей в блоге: 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
Ответ Создать тему
Новые блоги и статьи
Скрипты 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: Математический инвариант ОДУ и рок Стивов-бонобо Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман. Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
мат медиц модель 30. презентация проекта
anaschu 27.08.2026
хоп хоп хоп хидахоп, а я кладую))
Как у меня протекала болезнь
zorxor 27.08.2026
Здравствуйте, друзья! Эта запись блога предназначена именно для вас - для моих дорогих друзей, которые знали меня лично. Чтобы ответить на вопрос - а что же со мной произошло на самом деле? Я учился. . .
Нашел вот забавное видео о измерениях. Лучшее что я видел на эту тему
kumehtar 26.08.2026
ILETXiw9bMQ Основная суть и тезисы по измерениям: 0D (Нулевое измерение): точка, не имеющая длины, ширины, высоты или объема. Объект не может перемещаться в 0D. 1D (Первое измерение):. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru