实体框架6与Sql Server Compact 3.5 SP2?

时间:2013-11-18 21:02:34

标签: entity-framework sql-server-ce entity-framework-6 sql-server-ce-3.5

我已经找到了很多关于使用实体框架6和Sql CE 4以及将实体框架4与Sql CE 4和3.5一起使用的信息,但是将实体框架6与Sql CE 3.5一起使用是另一回事。据我所知,CE 3.5在System.Data.SqlServerCe.Entity.dll中附带了Entity Framework 4的提供程序。此提供程序使用旧版本的基类,如果我尝试使用它,我会得到以下异常:

  

System.InvalidOperationException:实体框架提供程序类型的'Instance'成员'System.Data.SqlServerCe.SqlCeProviderServices,System.Data.SqlServerCe.Entity,Version = 3.5.1.0,Culture = neutral,PublicKeyToken = 89845dcd8080cc91'不返回继承自'System.Data.Entity.Core.Common.DbProviderServices'的对象。实体框架提供程序必须从此类继承,并且“实例”成员必须返回提供程序的单例实例。这可能是因为提供者不支持实体框架6或更高版本;有关详细信息,请参阅http://go.microsoft.com/fwlink/?LinkId=260882

这是有道理的,并指出我认识到我需要的是Sql Server CE 3.5 SP2的Entity Framework 6的提供程序。我似乎无法找到这样的东西。 nuget包EntityFramework.SqlServerCompact似乎只引用了所有版本的Sql Compact 4。这样的提供者是否已经存在?如果是这样,它在哪里可以找到?我似乎很难找到它。如果没有,那么考虑通过使用CE 4中的代码来引用3.5来实现它是否是现实的,或者CE 3.5和4之间的区别是否太明显了?还有另一种解决方法吗?

我需要使用3.5,因为需要使用合并复制,这在4中不受支持,并且想要使用Entity Framework。如果没有直截了当的答案,我可能会使用Entity Framework之外的其他内容。

1 个答案:

答案 0 :(得分:9)

好的,这是我听到的第二个请求,让我们这样做。我将分叉代码,并为3.5创建一个Nuget包 - 如何“EntityFramework.SqlServerCompact.Legacy”?所需的“唯一”代码更改是3.5不支持通过Take和Skip调用的ORDER BY..FETCH..OFFSET语法(即分页)。你对此感兴趣吗?

更新:现在可以在NuGet http://www.nuget.org/packages/EntityFramework.SqlServerCompact.Legacy

上使用