我们正在尝试将将数据序列化的应用程序切换为使用数据库的文件。这是一个基本的Windows窗体应用程序。
我在启动应用程序时注意到,在通过Entity Framework初始化数据库连接时存在明显的延迟。我不知道造成这种情况的原因是什么,我的谷歌技能让我失望。
我在这上面做了一个dotTrace性能配置文件,这就是它显示的内容:
性能配置文件显示运行LoadNativeBinaries
的SQL Server CE差不多14秒。我错过了什么?我如何加快速度?
更新
我创建了一个测试数据库项目并将其部署到我正在测试的设备上。我第一次运行测试程序时,花了大约17秒。在第一次之后,花了不到一秒钟。然后我尝试运行我的实际应用程序,滞后已经消失。我重新安装了我的应用程序,第一次运行应用程序时,花了17秒,但后续运行时间不到一秒钟。这与我原来的问题不同,每次发布需要10秒以上。
我上传了我正在使用here的测试项目。我很好奇其他人是否得到了类似的结果。
以下是我正在使用的配置文件
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<connectionStrings>
<add name="dataEntities" connectionString="metadata=res://*/data.csdl|res://*/data.ssdl|res://*/data.msl;provider=System.Data.SqlServerCe.4.0;provider connection string='Data Source="data.sdf"'"
providerName="System.Data.EntityClient" />
</connectionStrings>
<system.data>
<DbProviderFactories>
<remove invariant="System.Data.SqlServerCe.4.0"/>
<add name="Microsoft SQL Server Compact Data Provider 4.0" invariant="System.Data.SqlServerCe.4.0" description=".NET Framework Data Provider for Microsoft SQL Server Compact" type="System.Data.SqlServerCe.SqlCeProviderFactory, System.Data.SqlServerCe, Version=4.0.0.1, Culture=neutral, PublicKeyToken=89845dcd8080cc91" />
</DbProviderFactories>
</system.data>
</configuration>
和测试程序:
using System.Data;
using System.Data.Entity;
using System.Data.SqlServerCe;
using System.Data.EntityClient;
namespace databaseTest
{
public partial class Form1 : Form
{
public string _connectionString;
public Form1()
{
InitializeComponent();
Configuration exeConfig = ConfigurationManager.OpenExeConfiguration("databaseTest.exe");
_connectionString = exeConfig.ConnectionStrings.ConnectionStrings["dataEntities"].ConnectionString;
}
private void button1_Click(object sender, EventArgs e)
{
Stopwatch st = new Stopwatch();
st.Start();
EntityConnection ec = new EntityConnection(_connectionString);
dataEntities ent = new dataEntities(ec);
st.Stop();
connectionTime.Text = st.Elapsed.ToString();
}
}
}
答案 0 :(得分:1)
正在使用哪种操作系统平台(操作系统和服务包)?
这通常是由两者引起的 1)RSA证书文件夹中的无效访问控制列表或 2)无效的Internet代理配置。
1)可由resetting the ACL修复(即使是管理员也可以修复)
要重置所有文件权限,请键入:
icacls * / T / Q / C / RESET
2)可以通过更正代理配置或通过registry key禁用证书撤销列表检查来修复。
要禁用CRL检查,请在以下位置创建注册表设置 地点: HKEY_LOCAL_MACHINE \系统\ CurrentControlSet \服务\ Sstpsvc \参数 该设置必须是名为NoCertRevocationCheck的DWORD值。设置 值为1.
答案 1 :(得分:1)
在您的方案中,这是由从一个平台移动到另一个平台的问题引起的,如下所述:{{3p>