实体框架6与Sql Server Compact 3.5 SP2



我发现了很多关于将Entity Framework 6与Sql CE 4一起使用以及将Entity Framework4与Sql CE4和3.5一起使用的信息,但将Entity Framework 6与SqlCE3.5一起使用则是另一回事。据我所知,CE 3.5附带了一个System.Data.SqlServerCe.Entity.dll中Entity Framework 4的提供程序。该提供程序使用旧版本的基类,如果我尝试使用它,我会得到以下异常:

System.InvalidOperationException:实体框架提供程序类型"System.Data.SqlServerCe.SqlCeProviderServices,System.Data.SqlServerCe.Entity,Version=3.5.1.0,Culture=neutral,PublicKeyToken=88945dcd8080cc91'未返回从"System.Data.Entity.Core.Common.DbProviderServices"继承的对象。实体框架提供程序必须从此类继承,并且"Instance"成员必须返回该提供程序的singleton实例。这可能是因为提供者不支持实体框架6或更高版本;看见http://go.microsoft.com/fwlink/?LinkId=260882了解更多信息。

这很有道理,并让我意识到我需要的是一个用于SqlServerCE3.5SP2的EntityFramework6的提供程序。不过我似乎找不到这样的东西。nuget包EntityFramework.SqlServerCompact似乎只在其所有版本中引用Sql Compact 4。这样的提供者是否已经存在?如果是,在哪里可以找到它?我似乎很难找到它。如果不是,那么考虑使用CE 4中引用3.5的代码来实现它是否现实,或者CE 3.5和4之间的差异太大,以至于无法简单明了?还有其他解决方法吗?

我需要使用3.5,因为需要使用合并复制,这在4中不受支持,并且我希望使用实体框架。如果没有一个简单的答案,我可能会使用实体框架以外的东西。

好吧,这是我听到的第二个请求,让我们来做吧。我会分叉代码,并为3.5制作一个Nuget包-"EntityFramework.SqlServerCompact.Legation"怎么样?所需的"唯一"代码更改是,3.5不支持通过Take和Skip调用的ORDER BY..FETCH..OFFSET语法(即分页)。你对此感兴趣吗?

更新:NuGet上现在提供软件包http://www.nuget.org/packages/EntityFramework.SqlServerCompact.Legacy

最新更新