Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 实体框架6的第一个SQLite查询速度较慢_C#_Performance_Sqlite_Entity Framework 6 - Fatal编程技术网

C# 实体框架6的第一个SQLite查询速度较慢

C# 实体框架6的第一个SQLite查询速度较慢,c#,performance,sqlite,entity-framework-6,C#,Performance,Sqlite,Entity Framework 6,我构建了一个小型C#应用程序,可以访问位于同一文件夹中的简单SQLite数据库。 应用程序不是很复杂,数据库也很简单(7个表,每个表有4-5列,预测的操作数据量少于1000条记录) 为了加快开发速度,我决定先使用Entity Framework 6代码(由EF power tools自动生成),它在我的中级开发PC(Intel i5)上就像一个charme-2400@3.10Ghz,8Gb RAM,256Gb三星PRO SSD,Win10 x64)。 对上下文的第一次访问发生在应用程序加载中,创

我构建了一个小型C#应用程序,可以访问位于同一文件夹中的简单SQLite数据库。 应用程序不是很复杂,数据库也很简单(7个表,每个表有4-5列,预测的操作数据量少于1000条记录)

为了加快开发速度,我决定先使用Entity Framework 6代码(由EF power tools自动生成),它在我的中级开发PC(Intel i5)上就像一个charme-2400@3.10Ghz,8Gb RAM,256Gb三星PRO SSD,Win10 x64)。 对上下文的第一次访问发生在应用程序加载中,创建my DbContext对象“只需”可接受的2266mS、130mS,对包含3条记录的表执行第一次Select()查询“只需”2126mS

不幸的是,在生产PC上(三星9 lite、四核1.4Ghz、4Gb ram、64Gb SSD、Win8.1 x64),第一次访问需要24300毫秒、1200毫秒来创建我的DbContext,23054毫秒来执行相同的Select()查询。 在第一次加载之后,即使是更复杂的查询也需要几毫秒的时间。 24秒来加载我的应用程序是不可接受的,因此我开始在web上找到一些修复方法

所有在应用程序的第一次SQLite db访问中通知缓慢的人,都使用离散维度的DbContext(大约50~100个实体),因此编译的LINQ查询和预编译的视图在这里是有意义的,但我认为我的情况不是这样。正如我前面所说,在我的开发PC上,这需要一段可接受的时间……我不想把时间花在为一个7表DB的简单CRUD应用程序引入复杂性上

这是我第一次将SQLite与EF一起使用。也许我做错了什么。通常我对SQLServer使用它,我从来没有遇到过任何性能问题

有人能给我一些建议吗?
谢谢

您使用的是哪个版本的sqlite提供程序,它的构建速度很慢。您是否尝试使用SQL Server Compact?您的数据库初始值设定项是什么?DropCreateDatabaseAlways可能导致您的问题我正在使用SQLite提供程序版本1.0.97.0。我没有使用SQL Server compact进行测试。对于这个项目,使用SQLite是绝对必要的,所以我会坚持使用它。我没有在上下文中指定任何初始值设定项,所以我认为EF使用CreateDatabaseIfNotExists。这是我的初始化:Database.SetInitializer(null);您使用哪个版本的sqlite提供程序,已经有一些缓慢的构建。您是否尝试使用SQL Server Compact?您的数据库初始值设定项是什么?DropCreateDatabaseAlways可能导致您的问题我正在使用SQLite提供程序版本1.0.97.0。我没有使用SQL Server compact进行测试。对于这个项目,使用SQLite是绝对必要的,所以我会坚持使用它。我没有在上下文中指定任何初始值设定项,所以我认为EF使用CreateDatabaseIfNotExists。这是我的初始化:Database.SetInitializer(null);