【发布时间】:2013-11-18 21:02:34
【问题描述】:
我发现了很多关于将 Entity Framework 6 与 Sql CE 4 一起使用以及将 Entity Framework 4 与 Sql CE 4 和 3.5 一起使用的信息,但是将 Entity Framework 6 与 Sql CE 3.5 一起使用是另一回事。据我所知,CE 3.5 在 System.Data.SqlServerCe.Entity.dll 中附带了实体框架 4 的提供程序。此提供程序使用旧版本的基类,如果我尝试使用它,我会收到以下异常:
System.InvalidOperationException:实体框架提供程序类型“System.Data.SqlServerCe.SqlCeProviderServices,System.Data.SqlServerCe.Entity,Version=3.5.1.0,Culture=neutral,PublicKeyToken=89845dcd8080cc91”的“Instance”成员不返回从“System.Data.Entity.Core.Common.DbProviderServices”继承的对象。实体框架提供者必须从此类继承,并且“实例”成员必须返回提供者的单例实例。这可能是因为提供者不支持 Entity Framework 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 sql-server-ce entity-framework-6 sql-server-ce-3.5