【问题标题】:Entity Framework 6 with Sql Server Compact 3.5 SP2?带有 Sql Server Compact 3.5 SP2 的实体框架 6?
【发布时间】: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


    【解决方案1】:

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

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

    【讨论】:

    • 是的,这确实让我感兴趣,这就是我想要的。对于我当前的项目,分页不是我关心的问题。我愿意做出贡献 - 但听起来好像没有很多,因为您声明代码中没有太多可更改的内容。你推销的包裹的名称对我有用。
    • 太好了,我已经准备好了 - 您是否考虑过使用 LINQ to SQL 来代替?
    • 感谢 erik,这太棒了。我已经考虑过替代方案,如果没有这条途径让实体框架正常工作,我可能会使用 nhibernate。
    • 我可以做些什么来帮助您解决这个问题吗?
    • 你愿意投稿吗,我可以让你成为合作者吗? entityframework.codeplex.com/SourceControl/network/forks/ErikEJ/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-02-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多