我们最近从使用SQL CE 3.5 SP2 RTM(文件版本3.5.8080)转移到累计更新2(3.5.8082),并开始遇到实体框架(来自.NET 3.5)无法加载系统的问题.Data.SqlServerCe.Entity.dll。
我们得到的错误是:
System.Data.MetadataException:指定的架构无效。错误: MyData.ssdl(2,117):错误0004:无法加载System.Data.SqlServerCe.Entity.dll。重新安装SQL Server Compact。
我不确定实体框架如何根据ADO.NET提供程序确定要加载的实体框架提供程序。一个有趣的小问题是,System.Data.SqlServerCe.dll的CU2副本的程序集版本是3.5.1.0(从RTM没有变化),但System.Data.SqlServerCe.Entity.dll的程序集版本是3.5.1.5。我不知道这是不是问题,但看起来很奇怪。
SSDL文件中引用的行是指定ADO.NET提供程序(System.Data.SqlServerCe)的行。它没有在我能看到的地方引用EF提供商。
如果我只是用RTM中的版本替换System.Data.SqlServerCe.Entity.dll,事情就会重新开始。然而,这让我很担心,因为我需要从CU2获得我可能不会得到的变化。
想法?
答案 0 :(得分:1)
这实际上是我使用CU安装程序创建的公共和私人程序集的组合结果。
我发现了SQL CE Private安装工作原理的精彩概述。有道理,它解决了我所有的问题:
http://www.codeproject.com/KB/database/SQLCEPrivateInstallation.aspx
我还写了一篇关于这个问题的博客文章: http://www.robertdowney.com/post/2011/04/13/Trials-and-Tribulations-with-SQL-Server-Compact-Edition.aspx
答案 1 :(得分:0)
我怀疑有任何变化,你可以使用Reflector / WinMerge找出答案。但这听起来像个错误。 Cooud你分享你的app.config?也许绑定重定向问题已经默默修复。