Pav*_*vel 6 sqlite xamarin.android xamarin ef-core-2.2 ef-core-5.0
我的 Xamarin.Android 应用程序启动缓慢。
第一次 DbContext 创建需要大约 4.5 秒(上下文有 24 个表)。一开始我以为这样做的原因是EF Core需要时间从DbContext扫描实体类并构建模型(这对于大型DbContext是有意义的)。
因此,我创建了一个只有一张表的测试 DbContext 来检查创建模型的时间与模型中表的数量之间的关系:
public class Log
{
[Key]
public int EntityId { get; set; }
public string Timestamp { get; set; }
public string Level { get; set; }
public string Exception { get; set; }
public string RenderedMessage { get; set; }
public string Properties { get; set; }
}
public class ApplicationLogDbContext : DbContext
{
public ApplicationLogDbContext(DbContextOptions<ApplicationLogDbContext> options)
: base(options) { }
public DbSet<Log> Logs { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
DbContext 测试代码:
var options = new DbContextOptionsBuilder<ApplicationLogDbContext>()
.UseSqlite("Data Source=/storage/emulated/0/Android/data/***/files/ApplicationLog.db")
.Options;
var logContext = new ApplicationLogDbContext(options);
logContext.Database.EnsureCreated();
Run Code Online (Sandbox Code Playgroud)
这段代码在我的三星 Galaxy S7 上执行需要3.3 秒。这个测试表明尝试一些解决方案是不合适的:
我还了解到:
EF Core 5 Preview 6 GitHub示例
我可以使用什么方法以某种方式向用户隐藏此初始化时间,但获取主要活动的数据?
有没有什么配置提示可以帮助增加默认配置初始化时间?
运行 .NET 5 时性能会提高吗?