以下で構成されるさまざまなプロバイダーの簡単な比較を実行しました:
- インストールの経験。
- 接続性。
- サーバーエクスプローラーの経験。
- データベースエクスペリエンスからの更新(データベースファースト)。
- データ型マッピング(データベースファースト)。
結論は次のとおりです。
1。インストール経験。
OracleのODP.NET(ベータ3):個別のx86バージョンとx64バージョンの複雑なインストール、Windows用に設計されていないインストーラー。システムパス(最大長に危険なほど近い)を埋め、標準フォルダー(プログラムファイル+ appdata)にインストールしません。
DevartのDotConnect:スムーズなインストール、プロバイダーDLLは完全に管理されています。
DataDirectの進捗状況:スムーズなインストール、プロバイダーDLLは完全に管理されています。
OPENLINK:サーバー側のインストールが必要なようです。これ以上テストしませんでした。
2。接続性。
OracleのODP.NET(ベータ3):構成が複雑で、クライアントマシンにOracleをインストールし、Oracleインストールに追加のTSNファイルを追加するか、LISP /Schemeのような長くて複雑な接続文字列を使用する必要があります。
更新: ドキュメントでこれを見つけることができませんでしたが、接続文字列には単純なデータソース定義を含めることもできます。 serverName:port/serviceName。
DevartのDotConnect:単純な接続文字列+ウィザード。
DataDirectの進捗状況:単純な接続文字列+ウィザード。
3。サーバーエクスプローラーの経験。
OracleのODP.NET(ベータ3):3つの中で最も強力で、キーとインデックスの簡単な編集、表示を可能にします。
DevartのDotConnect:テーブルとフィールドの表示。
DataDirectの進捗状況:キーとインデックスの簡単な編集、表示を可能にします。
4。データベースエクスペリエンスからの更新(データベースファースト)。
OracleのODP.NET(ベータ3):簡単です。
DevartのDotConnect:すべてのスキーマのテーブルを表示します。フィルタリングするオプションはありません。テーブルの検索に負担がかかります。
DataDirectの進捗状況:簡単です。
5。データ型マッピング(データベースファースト)。
OracleのODP.NET(ベータ3):数値(1,0)、数値(2,0)、数値(3,0)のデフォルトのマッピングが間違っています*。数値(2,0)と数値(3)を手動でオーバーライドできます、0)。 number(1,0)の修正は機能しません(少なくともベータ3では機能しません-ベータ2で機能した可能性があります)。
更新: リリースバージョンがリリースされたため(112030)、これは修正されました。一部のマッピングは、app.configファイルのセクションを介して可能です。
DevartのDotConnect:すべてのスキーマのテーブルを表示します。フィルタリングするオプションはありません-テーブルの検索を使い果たします.binaryfloat、binary double、タイムゾーン付きタイムスタンプ、number(2,0)、number(3,0)、number(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にはnumber(N、0)が必要です。ここで、Ceil(log10(2 ^ X))=N forstorage**です。
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
Devart
Oracle