Столбец SQLite DATETIME (в юлианском / вещественном / двойном) с Entity Framework - PullRequest
0 голосов
/ 10 июня 2019

У меня есть существующая база данных SQLite, которую я вызываю с помощью Entity Framework Codefirst. Даты вводятся в SQLite (не с кодом C #) как двойные (юлианские или иногда называемые действительными). Я не могу читать, когда пытаюсь получить его с помощью EF. Я пытался изменить ConnectionString (в app.config) на datetimeformat = Ticks, CurrentCulture и т. Д., Но безрезультатно. Кто-нибудь знает другой формат datetime для чтения формата datetime из double? Если решения не существует, я буду хранить дату и время как длинные (тики) в SQLite. Помощь, если таковая имеется, будет оценена и избежит этого обходного пути.

1 Ответ

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

Вот решение, которое я придумал: Я использовал не-c # код в качестве COM DLL (вызванный из .NET) и записывал поля SQLite DateTime в COM-объекте в два раза (дата автоматизации OLE). Все было хорошо, пока я не попытался прочитать поле DateTime из .NET с помощью Entity Framework. Я пытался изменить ConnectionString (в app.config) безрезультатно. Кажется, в EF нет возможности читать поля даты и времени путем преобразования из даты ОА. Обходные пути: 1- Используйте UnixEpoch, но он ограничивает вас <1970. 2- Используйте тики 3- Используйте строку "обычный старый". Я выбрал String, то есть я конвертирую DateTime в String и передаю его в COM. EF может читать данные String в полях SQLite, помеченных как DateTime, без необходимости указывать формат даты и времени в ConnectionString. Это было самое простое решение для меня, но я мог бы также использовать Ticks (преобразовать DT в Ticks (long) сначала в C # перед передачей в COM, а затем использовать datetimeformat = Ticks в ConnectionString). Возможно, у меня нет накладных расходов при написании строки, потому что мой набор дат не такой большой. </p>

...