Oracle实体框架兼容提供程序的比较?

Oracle实体框架兼容提供程序的比较?,oracle,entity-framework,entity-framework-4,comparison,dataprovider,Oracle,Entity Framework,Entity Framework 4,Comparison,Dataprovider,我读过类似的问题和他们的答案,但是,除了一个已经过时的问题(从2009年到EF4之前),似乎没有一个问题涉及到这个确切的问题 是否有人对Oracle的EF提供商有任何积极或消极的经验,如果有,您的经验是什么 类似问题: 我知道的提供商: Oracle的ODP.NET: Devart的点连接: DataDirect的进度: OPENLINK: 我知道Oracle的提供商目前是beta(3)版,并没有完全管理—32位和64位的二进制文件是分开的 其他人是否稳定? 有什么我错过的吗? 哪些已成

我读过类似的问题和他们的答案,但是,除了一个已经过时的问题(从2009年到EF4之前),似乎没有一个问题涉及到这个确切的问题

是否有人对Oracle的EF提供商有任何积极或消极的经验,如果有,您的经验是什么

类似问题:




我知道的提供商:
Oracle的ODP.NET:
Devart的点连接:
DataDirect的进度:
OPENLINK:

我知道Oracle的提供商目前是beta(3)版,并没有完全管理—32位和64位的二进制文件是分开的

其他人是否稳定?
有什么我错过的吗?

哪些已成功用于您的项目?

我还没有尝试EF 4.2,它应该支持最新的数据提供程序,4.1只支持MS SQL提供程序,因为有大量新的功能插件

这些都是

EF4.2仅作为NuGet软件包提供,应该是稳定的,我在生产中使用4.1(Asp.Net MVC和MS SQL Server)

此外,以下是与您的问题类似的一些以前的答案:

简而言之,如果您使用的是EntityFramework4.1,那么您应该进行更新,您可能会遇到严重的核心问题。 升级到4.2,然后再次测试,提供商的一切都会正常工作


例如,它支持Entity Framework v4,因此在EF 4.2中这将不会出现问题。我对不同的提供程序进行了快速比较,包括:

  • 安装经验
  • 连通性
  • 服务器浏览器体验
  • 根据数据库经验进行更新(数据库优先)
  • 数据类型映射(数据库优先)

  • 以下是结论:

    一,。安装经验

    Oracle的ODP.NET(beta 3): 单独x86和x64版本的复杂安装,安装程序不是为Windows设计的。 填充系统路径(危险地接近最大长度),不安装到标准文件夹(程序文件+appdata)

    Devart的DotConnect: 顺利安装,完全管理提供程序DLL

    DataDirect的进展: 顺利安装,完全管理提供程序DLL

    OPENLINK: 似乎需要服务器端安装,没有进一步测试

    二,。连通性

    Oracle的ODP.NET(beta 3): 配置复杂,需要在客户端计算机上安装Oracle,并且在Oracle安装中需要附加TSN文件,或者需要一个长而复杂的连接字符串,看起来像LISP/Scheme。
    更新:在文档中找不到,但是,连接字符串也可以包含简单的数据源定义,例如serverName:port/serviceName

    Devart的DotConnect: 简单连接字符串+向导

    DataDirect的进展: 简单连接字符串+向导

    三,。服务器浏览器体验

    Oracle的ODP.NET(beta 3): 三者中功能最强大的,可以轻松编辑、查看键和索引

    Devart的DotConnect: 查看表和字段

    DataDirect的进展: 允许轻松编辑、查看键和索引

    四,。根据数据库经验进行更新(数据库优先)

    Oracle的ODP.NET(beta 3): 直截了当

    Devart的DotConnect: 显示所有架构中的表,没有筛选选项-使查找表变得很累人

    DataDirect的进展: 直截了当

    五,。数据类型映射(数据库优先)

    Oracle的ODP.NET(beta 3): 数字(1,0)、数字(2,0)和数字(3,0)的默认映射错误*。 可以手动覆盖数字(2,0)和数字(3,0)。修复数字(1,0)不起作用(至少在beta 3上不起作用-可能在beta 2中起作用)

    更新:现在发布版本已经发布(112030),这已经被修复。 有些映射可以通过

    Devart的DotConnect: 显示所有架构中的表,没有筛选选项-使查找表变得很累人。 二进制浮点、二进制双精度、带时区的时间戳、数字(2,0)、数字(3,0)和数字(4,0)的默认映射错误*。手动超控应该可以工作-未检查

    DataDirect的进展: 默认映射是OK*

    (*)我期望的映射:

    如果希望数据库类型能够存储.NET类型范围内的任何数字,则 IntX需要一个数字(N,0),其中Ceil(log10(2^X))=N表示存储**

    Bool (Int1) ==> number(1,0)
    Byte (Int8) ==> number(3,0)
    Int16, UInt16 ==> number(5,0)
    Int32, UInt32 ==> number(10,0)
    Int64 ==> number(19,0)
    UInt64 ==> number(20,0)
    
    **计算假设无符号数,对于有符号数ceil(log(2^(X-1))

    数据类型假设的参考:



    谢谢你的提示。我会在测试前升级。
    Bool (Int1) ==> number(1,0)
    Byte (Int8) ==> number(3,0)
    Int16, UInt16 ==> number(5,0)
    Int32, UInt32 ==> number(10,0)
    Int64 ==> number(19,0)
    UInt64 ==> number(20,0)