EF Core + npgsql DateTime использует локализацию Windows 10 для форматирования - PullRequest
0 голосов
/ 29 июня 2018

Я обновил свой компьютер для разработки до Windows 10 и попытался добавить новое свойство Required DateTime в класс. Я создал миграцию с помощью Add-Migration, и была сгенерирована разумная миграция:

    {
        migrationBuilder.AddColumn<DateTime>(
            name: "AskingTime",
            table: "Questions",
            nullable: false,
            defaultValue: new DateTime(2000, 1, 1, 15, 0, 0, 0, DateTimeKind.Unspecified));
    }

Я пытался применить его с помощью Script-Migration, но он не работает с этой ошибкой:

ALTER TABLE "Questions" ADD "AskingTime" timestamp without time zone NOT NULL DEFAULT TIMESTAMP '2000-01-01 15.00.00';

Npgsql.PostgresException (0x80004005): 22007: invalid input syntax for type timestamp: "2000-01-01 15.00.00"

Мы попробовали это на моей коллеге, на которой все еще установлена ​​Windows 7, и она работает, как и ожидалось, без ошибок. Проблема заключалась в том, что финская локализация в Windows 10 указывает точку в качестве разделителя во временном поле. Я установил его на моей машине, переключившись на английскую (шведскую) локализацию времени, в которой используется двоеточие.

Итак, мой последний вопрос: можно ли заставить npgsql или EF Core правильно анализировать объекты даты и времени с точками в качестве разделителя времени?

1 Ответ

0 голосов
/ 29 июня 2018

Если проблема возникает только в миграциях, то вы можете указать значение по умолчанию с HasDefaultValueSql вместо HasDefaultValue:

builder.Entity<Question>()
    .Property(b => b.AskingTime)
    .HasDefaultValueSql("'2000-01-01 15:00:00'");

Примечание. Я не уверен, что указал дату в правильном формате строки, но вы поняли.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...