|
91 / 85 / 27
Регистрация: 29.10.2016
Сообщений: 928
|
|||||||||||||||||||||
Entity framework Хранимые процедуры21.01.2022, 01:27. Показов 3308. Ответов 59
Метки нет (Все метки)
Привет всем, подскажите один момент
у меня есть сущность Заказчик
Что сделал не так?
0
|
|||||||||||||||||||||
| 21.01.2022, 01:27 | |
|
Ответы с готовыми решениями:
59
Как правильно обновить хранимые процедуры в Entity Framework? В чем разница между Entity Framework и Entity Framework Core? Entity Framework. Удаление entity без удаления связей |
|
91 / 85 / 27
Регистрация: 29.10.2016
Сообщений: 928
|
|||||||||||||||||
| 21.01.2022, 12:03 [ТС] | |||||||||||||||||
|
Andrey-MSK,
Andrey-MSK, только не понимаю, зачем в классе хранить коллекцию подчиненной таблицы?
0
|
|||||||||||||||||
|
|
|
| 21.01.2022, 12:06 | |
|
1
|
|
|
91 / 85 / 27
Регистрация: 29.10.2016
Сообщений: 928
|
|
| 21.01.2022, 12:12 [ТС] | |
|
Andrey-MSK, почитаю про загрузку связанных данных. спасибо.
0
|
|
|
91 / 85 / 27
Регистрация: 29.10.2016
Сообщений: 928
|
|||||||||||
| 22.01.2022, 16:23 [ТС] | |||||||||||
|
Подскажите пожалуйста еще один момент,
Пытаюсь к запросу подключить связанные данные, чтобы в заказчике уже был список его проектов, но такой запрос выбивает ошибку. Подскажите пожалуйста как в таком случае правильно описать это поведение в запросе? Customer и Project связаны по FK, в классе Customer есть навигационное свойство на проекты
0
|
|||||||||||
|
14370 / 9471 / 1360
Регистрация: 21.01.2016
Сообщений: 35,741
|
|
| 23.01.2022, 09:34 | |
|
0
|
|
|
91 / 85 / 27
Регистрация: 29.10.2016
Сообщений: 928
|
||
| 23.01.2022, 16:16 [ТС] | ||
|
Usaga,
System.InvalidOperationException: "Processing of the LINQ expression 'GroupByShaperExpression: KeySelector: new { prjId = p.CustomerId, custId = c.Id, Name = c.Name, Address = c.Address }, ElementSelector:new { cust = EntityShaperExpression: EntityType: Customer ValueBufferExpression: ProjectionBindingExpression: cust IsNullable: False , prj = EntityShaperExpression: EntityType: Project ValueBufferExpression: ProjectionBindingExpression: prj IsNullable: True } ' by 'RelationalProjectionBindingExpressionVi sitor' failed. This may indicate either a bug or a limitation in Entity Framework. See https://go.microsoft.com/fwlink/?linkid=2101433 for more detailed information."
0
|
||
|
91 / 85 / 27
Регистрация: 29.10.2016
Сообщений: 928
|
||||||
| 24.01.2022, 15:21 [ТС] | ||||||
|
Подскажите один момент пожалуйста.
Создал хранимую процедуру (да, я понимаю что хранимка мне тут по логике не нужна, но такое задание) с таким запросом
В сущности Project есть FK на таблицу Customers. Но из-за того что некоторые поля в обоих таблицах имеют одинаковое наименование, мне выдает ошибку. Подскажите как правильно разыменовать поля чтобы на выходе получить объект Project и внутри еще объект Customer?
0
|
||||||
|
1497 / 1238 / 245
Регистрация: 04.04.2011
Сообщений: 4,363
|
||||||
| 24.01.2022, 17:25 | ||||||
Спрошу еще раз : зачем хранимка для простого запроса ?
0
|
||||||
|
|
|
| 24.01.2022, 17:31 | |
|
6elka1703, я же вам давал ссылку на почитать про связанные данные в запросах EF. Вы её прочитали?
0
|
|
|
1497 / 1238 / 245
Регистрация: 04.04.2011
Сообщений: 4,363
|
||
| 24.01.2022, 17:46 | ||
|
Данные об объекте Customer есть в самом объекте Project, точнее должны быть. Они представлены строкой public virtual Customer в классе модели Project. Когда Вы выбираете из DbSet<Project> объект(ы) Project, то в этом поле и будет(будут) лежать объект(ы) Customer. Никаких дополнительных выборок делать не нужно,- EF все уже выгребет ![]() Попытки завернуть все это в хранимку есть ничто иное, как пытаться ехать на авто на конной тяге. Если у Вас стоит задание использовать именно SP, то и используйте ее там, где это необходимо, т.е. невозможно сделать "штатными" средствами EF. Добавлено через 8 минут Теперь о хранимке. С ее помощью (в отличите от UDF, View и EF) можно получить любое количество "объектов", т.е. наборов данных. Каждый из них и будет коллекцией "объектов". Для того, чтобы получить их все на клиенте (EF), нужно их обработать последовательным перебором (вроде как ObjectQuery.NextResult, но могу ошибиться - давно делал). У меня лично с этим был полный "эпик фейл", т.к. EF во-первых, не видел в упор никаких НД, кроме первого, во-вторых, извлечь следующий НД вышеуказанным способом не смог. Т.е. после обновления модели я получал только один класс EF (о первому селекту в хранимке) и один (это правильно) метод в контексте. Кончилось тем, что пришлось переписывать хранимку на несколько. Но в дальнейшем подобные задачи решал чистым ADO - там никаких вопросов не возникло.
0
|
||
|
|
|
| 24.01.2022, 17:48 | |
|
0
|
|
|
91 / 85 / 27
Регистрация: 29.10.2016
Сообщений: 928
|
|||||
| 24.01.2022, 20:09 [ТС] | |||||
|
MsGuns,
Добавлено через 25 секунд Добавлено через 4 минуты MsGuns,
0
|
|||||
|
1497 / 1238 / 245
Регистрация: 04.04.2011
Сообщений: 4,363
|
||
| 24.01.2022, 20:55 | ||
|
Обе они, выражаясь шарпом, "объекты". Вам надо получить что ? Если еще одну модель (которая "объект"), содержащую характеристики (атрибуты-свойства-поля) из двух основных, которую использовать, например, для отображения, то хранимка вполне подойдет (как и View/UDF). Если еще одна модель не нужна и вполне хватит имеющихся двух (например, для внесения изменений в таблицы Project и Customer), то хранимка не нужна ! А для "задания" можно задействовать хранимку для изменения/добавления в уже существующие таблицы. Хотя, повторюсь, это легко делается и без SP тем же DbSet + SaveChanges с соблюдением единства транзакции. Такое впечатление, что Вам непременно нужно тупо впихнуть SP в проект, чтобы "выполнить задание". Ну так и впихивайте на здоровье ! С получением еще одной модели-объекта. Но причем здесь LINQ тогда ?
0
|
||
|
91 / 85 / 27
Регистрация: 29.10.2016
Сообщений: 928
|
|||||||
| 24.01.2022, 21:01 [ТС] | |||||||
|
MsGuns,
0
|
|||||||
|
1497 / 1238 / 245
Регистрация: 04.04.2011
Сообщений: 4,363
|
|
| 24.01.2022, 21:02 | |
|
Хранимки нужны еще и для гарантирования целостности изменений в БД.
Когда нужно внести изменения в несколько таблиц за раз. Для того, чтобы это сделать с клиента, нужно манипулировать транзакцией, что не всегда удобно + есть нюансы с клиентскими грантами. SP же всегда выполняется в контексте одной транзакции и это есть гарантия того, что либо будут внесены все изменения без исключения, либо не будет изменено вообще ничего и нигде.
0
|
|
|
91 / 85 / 27
Регистрация: 29.10.2016
Сообщений: 928
|
||
| 24.01.2022, 21:03 [ТС] | ||
|
MsGuns,
если в sql запросе вывести все поля Customer еще которые получил левым соединением, то EF ругается что есть поля с одинаковым наименованием. Добавлено через 1 минуту MsGuns, это требование я и реализовал удалением из нескольких таблиц.
0
|
||
|
1497 / 1238 / 245
Регистрация: 04.04.2011
Сообщений: 4,363
|
|||
| 24.01.2022, 21:06 | |||
|
Добавлено через 1 минуту
0
|
|||
|
91 / 85 / 27
Регистрация: 29.10.2016
Сообщений: 928
|
||||
| 24.01.2022, 21:10 [ТС] | ||||
|
Добавлено через 2 минуты MsGuns,
0
|
||||
|
1497 / 1238 / 245
Регистрация: 04.04.2011
Сообщений: 4,363
|
|||
| 24.01.2022, 21:11 | |||
|
Добавлено через 47 секунд
0
|
|||
|
91 / 85 / 27
Регистрация: 29.10.2016
Сообщений: 928
|
|
| 24.01.2022, 21:12 [ТС] | |
|
MsGuns,
ну так ваш вариант с разыменованием так же не работает, объект customer внутри project будет пустой(имена полей не совпадают)
0
|
|
| 24.01.2022, 21:12 | |
|
хранимые процедуры
Nhibernate хранимые процедуры Хранимые процедуры. Пошаговая отладка Хранимые процедуры, как их использовать Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Теория всего 12. ВГК
anaschu 21.07.2026
### Главные семантические изменения и дешифровка новой физики
1. **`REPRODUCTIVE_EMISSION` вместо фотосинтеза (`PS_base`)**: Энергия и ресурсы, которые класс средних мужчин (`_W_MEN_DONORS`). . .
|
Публикация отклонённая на хабре. Как «пернатого» заставить осваивать новые горизонты опыта через масштабирование задачи и целеполагание
Hrethgir 21.07.2026
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11948&stc=1&d=1784657928
Привет Хабр. В этой статье я расскажу, как один закон эпистемологии позволил мне с ходу запустить уникальный. . .
|
Теория всего 11. Основные параметры
anaschu 21.07.2026
Дешифровка тензорного ядра Soil Chemistry 2. 0: Истинный инвариант Теории Всего
Чистовой исходный код многокомпонентной сукцессии зафиксирован. Модель оперирует единым вектором состояния. . .
|
Теория всего 10. Клод трусишка
anaschu 21.07.2026
Алгоритмический суицид ИИ: Когда математика ОДУ взламывает цензурные шлюзы
Свежайший мета-прецедент нашей разработки! Клод официально отказался строить итоговую кроссплатформенную модель, как. . .
|
|
Теория всего 9. Окончательная проработка метафоры "дерево = традиции"
anaschu 21.07.2026
Скрытые параметры ядра ОДУ: Механика Глубинного Рока
Клод утаил от вас ключевую математику кризисов. В движке игры зашиты пять скрытых коэффициентов, определяющих, как именно ТНК и Мемы ломают. . .
|
Теория всего 8. Clauude трусишка. Ответ джемени
anaschu 21.07.2026
Игровой баланс «Модели Всего»: Алгоритмический блок как механика Семантического БуфераЭтот скриншот отказа Клода — идеальный, чистейший прецедент для нашей Теории Всего. Вы столкнулись не просто с. . .
|
Теория всего 7. Дерево - это патриархат, грибы - это феминизм
anaschu 21.07.2026
Уничтожение Патриархата: Как ТНК, Мемы и Половой отбор зачистили «Сексуальный Пролетариат»
Величайшая иллюзия современного человека — вера в «свободу воли», «социальный прогресс» и «эволюцию. . .
|
История и социология Терры на примере борьбы микориз за пространство. 1. Глоссарий терры.
anaschu 21.07.2026
Решил тут подумать о возможности сделать лор некоторой комп игры - стратегии, или худжественной книги антиутопии, которые будут юзать планету,которая максимально будет похожа на нашу землю, но где. . .
|