使用nvarchar的oracle 12c实体框架>;2000代码优先

使用nvarchar的oracle 12c实体框架>;2000代码优先,oracle,entity-framework-6,Oracle,Entity Framework 6,我目前正在使用EF6开发一个ASP.NET MVC5应用程序。该应用程序的目标是SQL Server 2014 我们的SQL Server数据库已经准备就绪,我们首先使用数据库中的实体框架代码来生成要使用的EF实体 现在,我们正在尝试使该应用程序同时在SQL SERVER和ORACLE 12c上工作。因此,我们将数据库迁移到Oracle,并将连接字符串切换为指向Oracle 理想情况下,EF应该支持这两个数据库,因为我们在这两个数据库上使用相同的模式 但是,我遇到了一些与数据类型和大小相关的问题

我目前正在使用EF6开发一个ASP.NET MVC5应用程序。该应用程序的目标是SQL Server 2014

我们的SQL Server数据库已经准备就绪,我们首先使用数据库中的实体框架代码来生成要使用的EF实体

现在,我们正在尝试使该应用程序同时在SQL SERVER和ORACLE 12c上工作。因此,我们将数据库迁移到Oracle,并将连接字符串切换为指向Oracle

理想情况下,EF应该支持这两个数据库,因为我们在这两个数据库上使用相同的模式

但是,我遇到了一些与数据类型和大小相关的问题,而这些是EF在Oracle上不允许的。其中包括:

  • oracle不支持长度大于2000的NVARCHAR2(但是12C现在支持它)
  • 不支持数据类型xml和ntext等
  • 请提供上述问题的解决方案,因为我们不希望为两个数据库维护不同的EF

    问候,,
    A

    为什么使用
    NVARCHAR2
    而不是
    VARCHAR2
    。现在有了Unicode和UTF-8,实际上不再需要NVARCHAR2了。谢谢您的输入。但是我这里的问题是EF处理列数据类型的方式。代码首先生成列长度为4000的实体。当我们尝试为Oracle使用相同的生成实体时,会出现错误。您找到解决方案了吗@WernfriedDomscheit我怎么能选择生成VARCHAR2而不是NVARCHAR2?@sinsedrix,实际上我认为你做不到。实际上,
    VARCHAR2/NVARCHAR2
    定义了字符串在Oracle中的内部存储方式,而不是向数据库发送/接收字符串的方式。为什么使用
    NVARCHAR2
    而不是
    VARCHAR2
    。现在有了Unicode和UTF-8,实际上不再需要NVARCHAR2了。谢谢您的输入。但是我这里的问题是EF处理列数据类型的方式。代码首先生成列长度为4000的实体。当我们尝试为Oracle使用相同的生成实体时,会出现错误。您找到解决方案了吗@WernfriedDomscheit我怎么能选择生成VARCHAR2而不是NVARCHAR2?@sinsedrix,实际上我认为你做不到。实际上,
    VARCHAR2/NVARCHAR2
    定义了字符串在Oracle中的内部存储方式,而不是向数据库发送/接收字符串的方式。