Установка DateTimeKind для базы данных SQLite в ASP. NET Core с Entity Framework - PullRequest
0 голосов
/ 16 июня 2020

У меня есть приложение ASP. NET Core, которое подключается к базе данных sqlite. Хотя я использую все значения DateTime в формате UTC (с DateTime.UtcNow и value.ToUniversalTime()), я все равно получаю значение datetime DateTimeKind.Unspecified из базы данных.

Я пытался установить DateTimeKind=Utc в строке подключения , но затем я получаю

System.ArgumentException: ключевое слово не поддерживается: 'datetimekind'

для кода

var context = services.GetRequiredService<ApplicationDbContext>();
context.Database.Migrate();

Я тоже уже попробовал это решение с:

services.AddDbContext<ApplicationDbContext>(options =>
{
    var connectionString = Configuration.GetConnectionString("DatabaseConnection");

    var conn = new SQLiteConnection(connectionString);
    conn.Open();

    var x = options.UseSqlite(
        conn
    );
});

, но оно по-прежнему вызывает ту же ошибку при миграции.

У меня такое ощущение, что функция Migrate создает собственное соединение , поскольку трассировка стека выглядит так:

at Microsoft.Data.Sqlite.SqliteConnectionStringBuilder.GetIndex(String keyword)  
at Microsoft.Data.Sqlite.SqliteConnectionStringBuilder.set_Item(String keyword, Object value)  
at System.Data.Common.DbConnectionStringBuilder.set_ConnectionString(String value)  
at Microsoft.Data.Sqlite.SqliteConnectionStringBuilder..ctor(String connectionString)  
at Microsoft.EntityFrameworkCore.Sqlite.Storage.Internal.SqliteDatabaseCreator.Exists()  
at Microsoft.EntityFrameworkCore.Migrations.HistoryRepository.Exists()  
at Microsoft.EntityFrameworkCore.Migrations.Internal.Migrator.Migrate(String targetMigration)  
at Microsoft.EntityFrameworkCore.RelationalDatabaseFacadeExtensions.Migrate(DatabaseFacade databaseFacade)  

Можно заметить, что трассировка стека проходит через

Microsoft.Data.Sqlite.SqliteConnectionStringBuilder

Но я не знаю, почему это происходит.

Вызов миграции выглядит так:

var context = services.GetRequiredService<ApplicationDbContext>();
context.Database.Migrate();

, так что, насколько я понимаю, context должен включать мое соединение SQLite на основе класса SQLiteConnection.

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