Сортировка десятичных чисел / дат с помощью Entity Framework Core и SQLite - PullRequest
0 голосов
/ 10 апреля 2019

Используя Entity Framework Core (Code First) и SQLite, Guid сохраняется как двоичный файл, а поля Decimal и Date хранятся в виде текста у поставщика Microsoft.

Я понимаю, что они могут не захотеть неточности DOUBLE дляденежные суммы и, следовательно, использовать текст.

Что произойдет, если мне нужно отсортировать?Является ли Entity Framework Core достаточно умным для того, чтобы сортировка работала должным образом (но медленнее, потому что она должна анализировать все!), Или она будет сортироваться по алфавиту вместо сортировки по номеру?Я не хочу, чтобы он возвращал 100 раньше, чем 2.

Мне придется делать такие вещи, как «дай мне последний заказ», так каков лучший подход к этому?Я хочу убедиться, что он будет работать.

Лучше ли мне переключиться на поставщика System.Data.SQLite для хранения дат в формате UNIX (это не поддерживается поставщиком Microsoft)?и тогда мне придется самому разбирать туда-сюда, или он мог бы позаботиться об этом автоматически?

1 Ответ

0 голосов
/ 08 июня 2019

Я все еще изучаю system.data.sqlite, но я знаю, что вы можете создавать и назначать пользовательские параметры сортировки для своего столбца.Параметры сортировки могут быть назначены столбцу таблицы или только определенному представлению или запросу с использованием стандартного синтаксиса SQL SQLite и ключевого слова COLLATE.

Это не полный пример / учебное пособие, но для начала документы Microsoft.data.sqlite .Также см. ответ о переполнении стека .Это всего лишь подсказки, но они обеспечивают последовательный метод для этого.Помните, что sqlite - это обработчик БД в процессе, поэтому он все еще должен быть достаточно эффективным и по-прежнему позволять работать с базой данных в обычном режиме, без необходимости постоянно вводить пользовательскую логику между запросами.После того как пользовательское сопоставление определено и правильно зарегистрировано, оно должно быть достаточно плавным, возможно, с единственным дополнительным требованием, например, добавить COLLATE customDecimal к предложениям ORDER BY.

Пользовательская функция сопоставления преобразует строковое значение всоответствующий числовой тип и вернуть сравнение.Это очень похоже на собственные интерфейсы / реализации .Net IComparer и IComparison.

...