sql >> データベース >  >> RDS >> Oracle

Oracle用のEntityFramework互換プロバイダーの比較?

    以下で構成されるさまざまなプロバイダーの簡単な比較を実行しました:

    1. インストールの経験。
    2. 接続性。
    3. サーバーエクスプローラーの経験。
    4. データベースエクスペリエンスからの更新(データベースファースト)。
    5. データ型マッピング(データベースファースト)。

    結論は次のとおりです。

    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



    1. MariaDBで日時に議事録を追加する8つの方法

    2. T-SQLで日付から日を取得する方法

    3. TimescaleDBバックアップをクラウドに保存するためのヒント

    4. 関数またはストアドプロシージャからテーブルを返すtsql