ServiceStack、Oracle 和 EntityFramework

ServiceStack, Oracle and EntityFramework

我正在尝试将一些旧的 WCF Web 服务转换为使用 ServiceStack 并添加更多功能。

我需要连接到 Oracle 并使用 EntityFramework 进行数据访问。

我已经尝试将 Oracle 管理的驱动程序与 ServiceStack.OrmLite.Oracle.Managed 包一起使用,但不断出现错误。

我拍了这个演示:http://www.dotnetcurry.com/aspnet/1056/introducing-service-stack-tutorial

并修改它以使用 Oracle 并遇到各种问题。

任何人都可以向我提供一些有关如何执行此操作的信息吗?

我将 ormListConnectionFactory 修改为:

var ormLiteConnectionFactory = new OrmLiteConnectionFactory(ConfigurationManager.ConnectionStrings["Oracle"].ConnectionString,
                                                                        OracleOrmLiteDialectProvider.Instance);

并出现这 2 个错误:

The type 'OrmLiteDialectProviderBase<>' is defined in an assembly that is not referenced. You must add a reference to assembly 'ServiceStack.OrmLite, Version=4.0.0.0, Culture=neutral, PublicKeyToken=e06fbc6124f57c43'.
cannot convert from 'ServiceStack.OrmLite.Oracle.OracleOrmLiteDialectProvider' to 'ServiceStack.OrmLite.IOrmLiteDialectProvider'

有没有办法不使用 OrmLite 而只使用 EF6?

使用 OrmLite 和 Oracle 的 NuGet 包是 ServiceStack.OrmLite.Oracle。但是,如果您不想使用 OrmLite,请不要引用任何 OrmLite NuGet 包或使用其 OrmLiteConnectionFactory class。

ServiceStack 本身不需要对 OrmLite 的任何依赖,您收到的错误消息可能是由于尝试使用旧的第 3 方 NuGet 包 ServiceStack.OrmLite.Oracle.Managed 进行混合和匹配,该包在版本 [=19] 处停止=]v4.0.33 与不同版本的 ServiceStack 包一起,你不能这样做 - 所有 ServiceStack NuGet 包应该是 相同版本.

ServiceStack 不禁止使用 EF6 - 您应该能够像使用任何其他 .NET 项目一样使用 EF6。