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

时间:2011-11-06 17:47:15

标签: oracle entity-framework entity-framework-4 comparison dataprovider

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

有没有人对使用Oracle的EF提供商有任何积极或消极的经验,如果有的话,您有什么经验?

类似的问题:
Entity Framework and Oracle
Can you use Microsoft Entity Framework with Oracle?
Entity framework with oracle database
How to choose an Oracle provider for .Net application?

我知道的提供商:
Oracle的ODP.NET:http://www.oracle.com/technetwork/topics/dotnet/index-085163.html
Devart的DotConnect:http://www.devart.com/dotconnect/entityframework.html
DataDirect的进度:http://www.datadirect.com/products/net/release-history.html
OPENLINK:http://uda.openlinksw.com/dotnet/

我知道Oracle的提供商目前是测试版(3)并且没有完全管理 - 32位与64位的单独二进制文件。

其他人是否稳定?
有没有我错过的? 哪些已成功用于您的项目?

2 个答案:

答案 0 :(得分:12)

我对不同的提供商进行了快速比较,包括:

  1. 安装经验。
  2. 连接。
  3. Server Explorer体验。
  4. 从数据库体验更新(数据库优先)。
  5. 数据类型映射(数据库优先)。

  6. 以下是结论:

    1。安装经验。

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

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

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

    OpenLink公司:   似乎要求服务器端安装,没有进一步测试。

    2。连接。

    Oracle的ODP.NET(beta 3):   要配置复杂,需要在客户端计算机上安装Oracle,并在Oracle安装中使用其他TSN文件,或者需要看起来像LISP / Scheme的冗长复杂的连接字符串。 更新:在文档中找不到这个,但是,连接字符串也可以包含简单的数据源定义,例如服务器名:端口/服务名

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

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

    3。服务器资源管理器体验。

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

    Devart的DotConnect:   查看表格和字段。

    DataDirect的进展:   可以轻松编辑,查看键和索引。

    4。从数据库体验更新(数据库优先)。

    Oracle的ODP.NET(beta 3):   简单。

    Devart的DotConnect:   显示所有模式中的表,没有过滤选项 - 使查找表格耗尽。

    DataDirect的进展:   简单。

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

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

    更新: 现在发布版已经发布(112030),这已得到修复。   可以通过section in app.config file进行一些映射。

    Devart的DotConnect:   显示所有模式中的表,没有过滤选项 - 使查找表耗尽。   二进制浮点数,二进制双精度数,带时区的时间戳,数字(2,0),数字(3,0)和数字(4,0)的默认映射是错误的*。手动覆盖应该工作 - 没有检查。

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

    (*)我预期的映射:

    DB Data Type    .NET Data Type
    integer     Decimal
    int         Decimal
    smallint        Decimal
    long        String
    decimal     Decimal
    rowid       String
    float       Decimal
    double      Decimal
    binary float    Single
    binary double   Double
    char[40]        String
    charvar[40]     String
    natchar[40]     String
    natcharvar[40]  String
    natcharacter[40]    String
    natcharactervar[40] String
    number      Decimal
    numeric     Decimal
    nvarchar2[40]   String
    real        Decimal
    date        DateTime
    timestamp       DateTime
    timestamplocal  DateTime
    timestampzone   DateTimeOffset
    xml String
    raw15       Binary
    raw16       Guid
    raw17       Int64
    number(1,0)     Boolean
    number(2,0)     Byte or SByte
    number(3,0)     Byte or SByte (accepted Int16 as OK too)
    number(4,0)     Int16
    number(5,0)     Int16 (accepted Int32 as OK too)
    number(6,0)     Int32
    number(7,0)     Int32
    number(8,0)     Int32
    number(9,0)     Int32
    number(10,0)    Int32 (accepted Int64 as OK too)
    number(11,0)    Int64
    number(15,0)    Int64
    number(16,0)    Int64
    number(17,0)    Int64
    number(18,0)    Int64
    number(19,0)    Int64 (accepted Decimal as OK too)
    number(20,0)    Decimal (would accept Int64 as OK too)
    number(21+,0)   Decimal
    

    如果您希望数据库类型能够存储.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))。

    数据类型假设的参考:
    TECH on the Net
    Devart
    Oracle

答案 1 :(得分:2)

我没有尝试过应该支持最新数据提供程序的EF 4.2,4.1因为数字新功能插件而只支持MS SQL提供程序。

以下是providers listed http://blogs.msdn.com/b/adonet/archive/2011/11/01/ef-4-2-released.aspx

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

此外,以下是一些与您的问题类似的先前答案: Support Oracle Provider for Entity Framework (msdn)

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

例如,

dotConnect for Oracle支持实体框架v4,因此在EF 4.2中可以正常运行