3

我讀過類似的問題和他們的答案,但是,似乎沒有處理這個確切的問題,除了一個,這是過時的(從2009年 - 前EF4)。Oracle的實體框架兼容提供者的比較?

有沒有人對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位VS 64位獨立的二進制文件。

其他人是否穩定?
有沒有我錯過的東西?
哪些已成功用於您的項目?

回答

12

我跑由不同供應商的快速比較:

  1. 安裝經驗。
  2. 連接。
  3. 服務器瀏覽器體驗。
  4. 從數據庫經驗更新(數據庫優先)。
  5. 數據類型映射(數據庫優先)。

以下是結論:

1.安裝經驗。

Oracle的ODP.NET(beta 3): 獨立x86和x64版本的複雜安裝,不是爲Windows設計的安裝程序。 填充系統路徑(危險接近最大長度),不會安裝到標準文件夾(程序文件+ appdata)。

Devart的DotConnect: 順利安裝,提供DLL被全面管理。

的DataDirect的進展情況: 順利安裝,提供DLL被全面管理。

OpenLink公司: 似乎需要服務器端安裝,並沒有進一步測試。

2.連接性。

Oracle的ODP.NET(測試版3): 複雜的配置,需要在Oracle安裝或看起來像LISP /計劃一個漫長而複雜的連接字符串的客戶機與附加TSN文件的Oracle安裝。
更新:在文檔中找不到這個,但連接字符串也可以包含簡單的數據源定義,例如服務器名稱:端口/服務名。

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上 - 可能在測試版2中工作)。

更新:現在發佈版本已經過期(112030),這已得到修復。 有些映射可以通過section in app.config file進行。

Devart的DotConnect: 顯示來自所有模式的表,沒有過濾選項 - 使查找表耗盡。 二進制浮點數,二進制double,具有時區的時間戳,數字(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) 

**計算假設無符號數,爲符號數小區(日誌(2 ^(X-1))

參考數據類型的假設:
TECH on the Net
Devart
Oracle

2

我還沒有試過EF 4.2,它應該支持最新的數據提供程序,4.1只支持MS SQL Providers,因爲有大量的新功能插件。

這裏是所有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)

簡而言之,如果你使用實體框架4.1,你應該更新,你可能會有嚴重的核心問題。 升級到4.2,然後再次測試,一切都應該與供應商一起正常工作。

dotConnect for Oracle例如對實體框架v4的支持,所以這不會有任何問題的工作在EF 4.2

+0

感謝您的提示,我會在測試之前升級。 –

相關問題