С Новым годом! Форум программистов, компьютерный форум, киберфорум
C#: Базы данных, ADO.NET
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
5 / 5 / 1
Регистрация: 09.02.2016
Сообщений: 265
1

Получить последнюю запись в таблице по условию c Entity Framework Core 8

04.11.2024, 04:22. Показов 497. Ответов 7
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Добрый день!
Есть таблица у которой первой колонкой идет серийный номер устройства. Мне нужно создать запрос, который будет возвращать последнюю добавленную запись с указанным серийным номером.
Пытался найти ответ в сети, но там везде варианты с OrderBy, а у меня таблица не содержит ничего, по чему можно сгруппировать - ни инкрементного номера, ни даты (таблица не моя, повлиять на ее структуру нельзя).
Подскажите пожалуйста, как можно провернуть такое не в ущерб производительности?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
04.11.2024, 04:22
Ответы с готовыми решениями:

Сгруппировать по A и взять максимальную запись по B (Entity Framework Core)
Всем привет! У меня в базе есть такая таблица: Id Name Value ...

В чем разница между Entity Framework и Entity Framework Core?
В чем разница (если она есть) между entity framework и entity framework core?

Ошибка при добавлении пакета nuGet Entity Framework Core SQLserver net Core 3.1
Всем привет! Столкнулся с проблемой добавления пакета nuGet Entity Framework Core SQLserver в свой...

ASP.NET Core 3.0 с Entity Framework Core + SQL
Привет, прохожу стажировку в одной компании. Дали вот такое задание, дедлайн отсутствует,...

7
Эксперт .NET
12568 / 8742 / 1311
Регистрация: 21.01.2016
Сообщений: 32,782
04.11.2024, 05:38 2
a13428711, OrderBy для сортировки, а не группировки.

Цитата Сообщение от a13428711 Посмотреть сообщение
Подскажите пожалуйста, как можно провернуть такое не в ущерб производительности?
А на SQL как бы ты такое провернул без ущерба производительности?
0
5 / 5 / 1
Регистрация: 09.02.2016
Сообщений: 265
04.11.2024, 05:45  [ТС] 3
Отпечатался, для сортировки.
А в sql разве нельзя что-то типо SEELECT WHERE условие DESC TAKE(1)?
Я там не соло силен, кроме инсертов, селектов и лайков особо ничем и не пользовался.
0
Эксперт .NET
12568 / 8742 / 1311
Регистрация: 21.01.2016
Сообщений: 32,782
04.11.2024, 06:35 4
a13428711, ты логику запроса опиши. А то я так до сих пор не понял, что у тебя там за запрос такой. Записей с одним серийным номером может быть несколько? Как порядок таких записей определяется?
0
5 / 5 / 1
Регистрация: 09.02.2016
Сообщений: 265
04.11.2024, 13:28  [ТС] 5
Usaga, Ааа, ты об этом)
Вообщем есть таблица, куда устройства записывают значимые события путем обычного инсерта новой записи. Старые записи не удаляются. Устройств много и у каждого уникальный серийный номер. Запись устройствами производится рандомно - у кого возникло событие, тот и пишет в БД. Как писал выше - порядкового номера записи или даты добавления нет, поэтому поля для сортировки не выбрать.
Задача поучать последнюю добавленную запись устройства, с указанным серийным номером.
Как-то так)

Добавлено через 10 минут
Если быть совсем точным, то столбец с датой и временем есть, но это время возникновения события на самом устройстве и нет гарантий, что оно точное (устройство может накидать события в БД до того, как на нем успеют настроить актуальные дату и время).
0
Эксперт .NET
12568 / 8742 / 1311
Регистрация: 21.01.2016
Сообщений: 32,782
04.11.2024, 14:04 6
a13428711, вообще, тут лучше бы добавить timestamp, чтобы было почему сортировать. Но, можно использовать первичный ключ, если он не GUID.

Там же счётчик монотонно возрастающий.

Добавлено через 19 минут
А вообще, использовать EF обязательно? Есть более гибкая ORM, где подобный запрос выполняется весьма просто.
0
5 / 5 / 1
Регистрация: 09.02.2016
Сообщений: 265
04.11.2024, 21:49  [ТС] 7
Добавлено через 3 минуты
Usaga, Таблица легаси, ей другой человек занимается и повлиять нельзя на структуру.
Я как умный решил в ногу со временем идти и взял EF, но чет то ли не понимаю как работать, толи это решение для простейших проектов по ощущениям. Как он вообще в продакшене, активно используется?
На sql да, подобный запрос помню в пару строк делали. Пока не поздно могу EF выкинуть.

Добавлено через 4 часа 8 минут
Что-то посмотрел я SQL напрямую и не увидел разницы. Запрос будет по типу:
SQL
1
2
3
4
5
SELECT *
FROM TABLE_NAME
WHERE sernum = serialNumber
ORDER BY id(TIME) DESC
LIMIT 1
В итоге опять упираемся в ORDER BY...
0
1290 / 869 / 258
Регистрация: 08.08.2014
Сообщений: 2,484
06.11.2024, 08:30 8
Цитата Сообщение от a13428711 Посмотреть сообщение
не содержит ничего, по чему можно сгруппировать - ни инкрементного номера, ни даты
Можно, конечно, попытаться как-то так выкрутиться (mssql server):
T-SQL
1
2
3
4
5
6
7
8
with ode as
(
    select device_serial_num, event_data, row_number() over(order by (select null)) as row_num
    from device_event
    where device_serial_num = 'kkn-884'
)
select top 1 device_serial_num, event_data 
from ode order by row_num desc;
Но только вот я не уверен, что результат будет предсказуемый и не изменится после какого-нибудь 'shrink' базы данных (или ещё каких-то обстоятельств). Это явное указание 'order by' оно ведь не просто так требуется во всех подобных запросах, а именно для устранения неопределённости в порядке записей (который может зависеть от особенностей внутренней реализации конкретной СУБД).

Добавлено через 5 минут
Ну и вот тут прямым текстом написано, что:
The order in which rows are returned in a result set aren't guaranteed unless an ORDER BY clause is specified.
0
06.11.2024, 08:30
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
06.11.2024, 08:30
Помогаю со студенческими работами здесь

Зачем нужна библиотека Entity Framework Core Core?
Здравствуйте. Чем отличается Entity Framework от Entity Framework Core - понятно. Но чем отличается...

Asp.net core rc 2 и Entity Framework core
Добрый день, кто-нибудь уже перешел на новую версию фреймверка? Хотелось бы получить пример. ...

T-SQL получить последнюю запись удовлетворяющую условию
Как получить последнюю запись удовлетворяющую условию Например DECLARE @UserId BIGINT; SELECT ...

ADOTable+access получить последнюю запись в таблице
Собственно есть таблица, в ней есть счетчик, как мне получить последнее значение счетчика?

Entity framework заполнить ID из другой таблице, в таблице при создании
Плохое название, объясню подробнее. Существует у меня 2 сущности: public class User : Base {...

SQL Server Compact Framework. Как получить из базы данных последнюю добавленную запись в таблицу
Так не работает. Вообще исключение появляется, что не знает SQL такой функции internal...

Работа с Entity Framework Core
Никак не могу разобраться, как работать с EFCore в WPF. Может, плохо искал, поэтому, буду очень...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
UserScript для подсветки кнопок языков программировани­­­я в зависимости от текущего раздела
volvo 13.01.2025
В результате работы этого скрипта подсвечиваются нужные кнопки не только в форм быстрого ответа, но и при редактировании сообщения: / / ==UserScript== / / @name CF_DefaultLangSelect / / . . .
Введение в модели и алгоритмы машинного обучения
InfoMaster 12.01.2025
Машинное обучение представляет собой одну из наиболее динамично развивающихся областей искусственного интеллекта, которая фокусируется на разработке алгоритмов и методов, позволяющих компьютерам. . .
Как на Python создать нейросеть для решения задач
InfoMaster 12.01.2025
В контексте стремительного развития современных технологий особое внимание уделяется таким инструментам, как нейросети. Эти структуры, вдохновленные биологическими нейронными сетями, используются для. . .
Как создать нейросеть для генерации картинок на Python
InfoMaster 12.01.2025
Генерация изображений с помощью искусственных нейронных сетей стала одним из наиболее захватывающих направлений в области компьютерного зрения и машинного обучения. В этой статье мы рассмотрим. . .
Создание нейросети для генерации текста на Python
InfoMaster 12.01.2025
Нейросети, или искусственные нейронные сети, представляют собой модели машинного обучения, вдохновленные работой человеческого мозга. Они состоят из множества взаимосвязанных узлов, или "нейронов",. . .
Как создать нейросеть распознавания изображений на Python
InfoMaster 12.01.2025
Введение в распознавание изображений с помощью нейросетей Распознавание изображений с помощью нейронных сетей стало одним из самых впечатляющих достижений в области искусственного интеллекта. Эта. . .
Основы искуственного интеллекта
InfoMaster 12.01.2025
Искусственный интеллект (ИИ) представляет собой одну из наиболее динамично развивающихся областей современной науки и технологий. В широком смысле под искусственным интеллектом понимается способность. . .
Python и нейросети
InfoMaster 12.01.2025
Искусственные нейронные сети стали неотъемлемой частью современных технологий, революционизировав множество областей - от медицинской диагностики до автономных транспортных средств. Python, благодаря. . .
Python в машинном обучении
InfoMaster 12.01.2025
Python стал неотъемлемой частью современного машинного обучения, завоевав позицию ведущего языка программирования в этой области. Его популярность обусловлена несколькими ключевыми факторами, которые. . .
Создание UI на Python с TKinter
InfoMaster 12.01.2025
TKinter — это одна из наиболее популярных библиотек для создания графических интерфейсов пользователей (GUI) в языке программирования Python. TKinter входит в стандартную библиотеку Python, что. . .
HTML5 в разработке мобильных приложений
InfoMaster 12.01.2025
Введение: Обзор роли HTML5 в мобильной разработке В современном мире мобильных технологий HTML5 стал ключевым инструментом для разработки кроссплатформенных приложений. Эта технология произвела. . .
Как создавать приложения для iOS/iPhone
InfoMaster 12.01.2025
Введение в разработку iOS-приложений Разработка приложений для iOS открывает огромные возможности в мире мобильных технологий. С каждым годом количество пользователей iPhone и iPad растет,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru