【发布时间】:2020-06-16 14:07:16
【问题描述】:
我有一个连接到 sqlite 数据库的 ASP.NET Core 应用程序。尽管我将所有 DateTime 值用作 UTC(使用 DateTime.UtcNow 和 value.ToUniversalTime()),但我仍然从数据库中获取日期时间值 DateTimeKind.Unspecified。
我试图在连接字符串中设置DateTimeKind=Utc,但后来我得到了
System.ArgumentException:不支持关键字:'datetimekind'
代码
var context = services.GetRequiredService<ApplicationDbContext>();
context.Database.Migrate();
我也已经尝试过this 解决方案:
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 应该包括我基于 SQLiteConnection 类的 SQLite 连接。
【问题讨论】:
-
如何使用像这里的值转换器stackoverflow.com/questions/50727860/…
-
@IvanStoev 这解决了我的问题,所以 +1
标签: c# sqlite asp.net-core entity-framework-core