我在桌面应用程序中使用Entity Framework 4和SQL Compact。我想在我的应用程序中使用一个私有安装的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();
我是不是少了一个文件? 我是否需要配置Entity Framework告诉它我的SQL Compact DLLs在哪里找? 还有其他建议吗,为什么EF在安装机器上找不到我的SQL Compact DLLs?感谢您的帮助。