【问题标题】:Compatibility between oracle 19c and .net (mvc)oracle 19c 和 .net (mvc) 之间的兼容性
【发布时间】:2021-09-27 20:08:50
【问题描述】:

项目在

  • .Net Framework MVC 4.6
  • Oracle 数据库更新到 19.0.48.0.0

我的应用程序在复杂的基础架构中工作,并且更新到 .net 核心框架,效果不佳!

我花了 2 到 3 周的时间寻找这个解决方案,但所涉及的所有信息都将应用程序更新为 .NET CORE。 (Oracle 数据库更新到 Oracle.ManagedDataAccess 版本到 19.3.0

错误资源管理器“Oracle data Provider for .NET 不支持 Oracle 19.0.48.0.0”

应用程序出错:

 public static Context Create(string tenantSchema, DbConnection connection, bool starTablesContext = true)
        {
            var compiledModel = modelCache.GetOrAdd(
                Tuple.Create(connection.ConnectionString, tenantSchema),
                t =>
                {
                    var builder = new DbModelBuilder();
                    //builder.Conventions.Remove<ColumnTypeCasingConvention>();
                    builder.Conventions.Remove<PluralizingTableNameConvention>();
                    builder.Conventions.Remove<IncludeMetadataConvention>();
                    if (starTablesContext) StartTables(builder, tenantSchema);
                     //Error in this line 
                    var model = builder.Build(connection);

                    return model.Compile();
                });
            return new Context(connection, compiledModel, tenantSchema);
        }

有人知道如何在不更新的情况下解决此问题吗?

还有其他解决方案吗?

恐怕要将此解决方案中的所有应用程序更新为 .NET Core,辛苦了,因为 MVC 和 .NET CORE 需要进行许多更改才能工作,并且在此之后问题无法解决并导致任何其他问题。

【问题讨论】:

  • 请阅读How to Ask,其中指出,“请勿发布代码、数据、错误消息等的图片。 - 将文本复制或输入到问题中。 "(强调原文)。
  • 为什么不想更新到 Oracle.ManagedDataAccess 19.3 版?您可以将它与完整的 .NET Framework 一起使用。无需切换到 .NET Core。 The release notes for the version mention it is certified for .NET Framework 4.8...
  • 您是否使用了正确的驱动程序?您是否使用了最新版本?你使用的是 .NET Old 还是 .NET Core 版本>Oracle.ManagedDataAccess.Core 的最新版本是 3.21.3,而不是 19.3。
  • the update to .net core framework 没有这样的东西。 .NET Framework 是在 .NET Framework 4.8 停止并处于维护模式的旧运行时。 .NET Core 是新的跨平台运行时。 .NET 5 是 .NET Core 5。最新版本是 .NET 6 RC1,虽然尚未最终确定,但在生产中受支持。 .NET Core 是 5 年前发布的,因此与 .NET Old 存在很多的差异和重大变化。 Web 开发本身是非常不同的。 Web API、Razor Pages 和 MVC 的差异远大于 Oracle ADO.NET 驱动程序
  • @PanagiotisKanavos 没有 .NET Core 5 这样的东西。有 .NET Core 3.1 和 .NET Framework 4.8。现在有了 .NET 5。只要我们是迂腐的;-P

标签: .net asp.net-mvc oracle19c


【解决方案1】:

从 .NET Framework 4.8 升级到 .NET 5.0 及更高版本存在一些风险,应该逐步进行(如果有的话)。由于 API 更改中断,稍后将其重写为 .NET 5.0+ 可能更有意义。我们的大部分代码仍在 .NET Framework 4.8 中运行,此时将所有内容升级/移植到 .NET 5.0 并不划算。在 .NET 5.0+ 中,有一个更大的计划是将我们的单体应用程序重写为微服务。

我最近参与的一个项目涉及连接到 Oracle 并利用 EF Core 3.1。 EF Core 3.1 与 .NET Framework 4.8 兼容,因为它面向 .NET Standard 2.0。我们正在使用与 EF Core 3.1 配合使用的 Oracle.EntityFrameworkCore Nuget 包的 3.x 版。包的 5.x 版需要 .NET Standard 2.1,它与 .NET Framework 4.8 不兼容。此外,它需要 EF Core 5.x 或更高版本,这也需要 .NET Standard 2.1。

【讨论】:

  • 嗨@Cameron Tinker!感谢回复,重构和更新框架确实是挑战者。我添加了这个问题以寻找另一种方式,其他意见并找到不平凡的解决方案。但是,另一方面,每个回复都显示出一些新的东西,并且肯定会帮助我应对这个挑战!
猜你喜欢
  • 2020-05-30
  • 1970-01-01
  • 2011-04-07
  • 1970-01-01
  • 2012-03-08
  • 1970-01-01
  • 2017-03-27
  • 2019-12-27
  • 2021-12-27
相关资源
最近更新 更多