Есть две таблицы. Мастер — деталь. В детали — число предметов на определенную дату.
Как с помощью EF и Linq посчитать разницу предметов по датам? Т.е. фактически нужно вычесть из сегодняшнего числа вчерашнее. И так для каждой записи мастера. Записей может быть много.
И при этом не положить ни сервер бд ни сервер приложения.
СУБД — MariaDb
Здравствуйте, BlackEric, Вы писали:
BE>СУБД — MariaDb
Ну а как это сделать в самой MariaDB? Она поддерживает подобные операции? Если нет, то у меня есть только одно, колхозное предложение — перевести даты в UTC Unix Epoch, т.е. в int и получившиеся числа уже вычитать, и преобразовывать результат в Timespan руками.
Здравствуйте, BlackEric, Вы писали:
BE>Есть две таблицы. Мастер — деталь. В детали — число предметов на определенную дату. BE>Как с помощью EF и Linq посчитать разницу предметов по датам? Т.е. фактически нужно вычесть из сегодняшнего числа вчерашнее. И так для каждой записи мастера. Записей может быть много. BE>И при этом не положить ни сервер бд ни сервер приложения. BE>СУБД — MariaDb
SQL писать. Ручками. EF Linq, скорее всего загнется или затянет обе таблицы полностью в память. Он для серьезных запросов не заточен.
Если бы дали описание модели, я бы вам linq запрос написал. А так лень.
Да и задача не понятна, какие параметры запроса? Промежуток времени?
Здравствуйте, Danchik, Вы писали:
D>SQL писать. Ручками. EF Linq, скорее всего загнется или затянет обе таблицы полностью в память. Он для серьезных запросов не заточен. D>Если бы дали описание модели, я бы вам linq запрос написал. А так лень. D>Да и задача не понятна, какие параметры запроса? Промежуток времени?
Я уже сам написал. Спасибо.
Но вот что будет на реальных данных со скоростью мне самому интересно.
var result = from t in _db.Histories
join y in _db.Histories on t.CreatedAt.Date equals y.CreatedAt.Date.AddDays(1)
join c in _db.Ch on y.ChId equals c.Id
where t.CreatedAt.Date == DateTime.Now.Date && c.Id == t.ChId
select new
{
Delta = t.Count — y.Count,
Id = t.ChId,
Name = c.ChName
};
Здравствуйте, BlackEric, Вы писали:
BE>Здравствуйте, Danchik, Вы писали:
D>>SQL писать. Ручками. EF Linq, скорее всего загнется или затянет обе таблицы полностью в память. Он для серьезных запросов не заточен. D>>Если бы дали описание модели, я бы вам linq запрос написал. А так лень. D>>Да и задача не понятна, какие параметры запроса? Промежуток времени?
BE>Я уже сам написал. Спасибо. BE>Но вот что будет на реальных данных со скоростью мне самому интересно. BE>[q]
SQL лучше показать. Но думаю придется индексы добавлять если их нет.