我在带有 SQL Compact 的桌面应用程序中使用 Entity Framework 4。我想在我的应用程序中使用 SQL Compact 的私有安装,这样我的安装程序就可以安装 SQL Compact,而无需让用户进行第二次安装。它还避免了版本控制的麻烦。
我的开发机器安装了 SQL Compact 3.5 SP1 作为公共安装,所以我的应用程序在那里运行良好,正如人们所期望的那样。但它没有在我的测试机器上运行,它没有安装 SQL Compact。我收到此错误:
The specified store provider cannot be found in the configuration, or is not valid.
我知道有些人在使用 SQL Compact 私有安装时遇到了困难,但我已经使用了一段时间,我真的很喜欢它们。不幸的是,我的常规私人安装方法不起作用。我检查了我的 SQL CE 文件上的版本号,它们都是 3.8.8078.0,即 SP2 RC 版本。
以下是我在私人安装中包含的文件:
- sqlcecompact35.dll
- sqlceer35EN.dll
- sqlceme35.dll
- sqlceqp35.dll
- sqlcese35.dll
- System.Data.SqlServerCe.dll
- System.Data.SqlServerCe.Entity.dll
我已经在我的项目中添加了对 System.Data.SqlServerCe 的引用,并且我已经验证上面列出的所有文件都被复制到安装机器上的应用程序文件夹中。
这是我在打开 SQL Compact 文件时用来配置 EntityConnectionStringBuilder 的代码:
var sqlCompactConnectionString = string.Format("Data Source={0}", filePath);
// Set Builder properties
builder.Metadata = string.Format("res://*/{0}.csdl|res://*/{0}.ssdl|res://*/{0}.msl", edmName);
builder.Provider = "System.Data.SqlServerCe.3.5";
builder.ProviderConnectionString = sqlCompactConnectionString;
var edmConnectionString = builder.ToString();
我错过了一个文件吗?我是否缺少告诉实体框架在哪里可以找到我的 SQL Compact DLL 所需的配置步骤?为什么 EF 没有在安装机器上找到我的 SQL Compact DLL 的任何其他建议?谢谢你的帮助。