Oracle实体框架兼容提供程序的比较?
我读过类似的问题和他们的答案,但是,除了一个已经过时的问题(从2009年到EF4之前),似乎没有一个问题涉及到这个确切的问题 是否有人对Oracle的EF提供商有任何积极或消极的经验,如果有,您的经验是什么 类似问题: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位的二进制文件是分开的 其他人是否稳定? 有什么我错过的吗? 哪些已成
我知道的提供商:
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)