The SQLite provider has several migration limitations and most of these limitations are a result of limitations in the underlying SQLite database engine and are not specific to EF.
The common relational library (shared by Entity Framework relational database providers) defines APIs for modeling concepts that are common to most relational database engines. A couple of these concepts are not supported by the SQLite provider.
SQLite doesn't natively support the following data types. EF Core can read and write values of these types, and querying for equality (where e.Property == value
) is also supported. Other operations, however, like comparison and ordering will require evaluation on the client.
DateTimeOffset
Decimal
TimeSpan
UInt64
Instead of DateTimeOffset
, it is recommended to use DateTime
values.
Decimal
type provides a high level of precision. If you don't need that level of precision, however, it is recommended to use double
instead.modelBuilder.Entity<MyEntity>()
.Property(e => e.DecimalProperty)
.HasConversion<double>();
The SQLite database engine does not support many schema operations that are supported by the majority of other relational databases.
NotSupportedException
will be thrown.The SQLite database engine does not support the following schema operations that are supported by the majority of other relational databases.
Rebuilds are only possible for database artifacts that are part of your EF Core model.
You can work around some of these limitations by manually writing code in your migrations to perform a rebuild.