34

Entity FrameworkをインストールせずにODP.NETをデプロイして構成するにはどうすればよいですか?

A. Oracle.DataAccess.Client をデプロイおよび構成する方法を教えてください。

B. Oracle.ManagedDataAccess.Client をデプロイおよび構成する方法は?

C. Oracle SSDL を使用した EDMX を使用したビルドを機能させるには、何をする必要がありますか?

D. デザイナーのサポートのために何をインストールする必要がありますか?

4

2 に答える 2

69

この回答は、(できれば) 必要なすべての手順をまとめたものであり、その多くはオンラインのさまざまな場所に文書化されており、Google で何時間も節約できる可能性があります。

A. Oracle.DataAccess.Client をデプロイおよび構成する方法。

A.1. ODAC112030Xcopy_64bit.zipまたはODAC112030Xcopy_32bit.zipをダウンロードします。

A.1.1. zip ファイル内の次のフォルダーの内容をアプリケーション/ホストの bin/setup フォルダーに抽出します。

A.1.1.1. instantclient_11_2

A.1.1.2. odp.net4\bin\

A.1.1.3. odp.net4\odp.net\bin\

A.1.1.4. odp.net4\odp.net\PublisherPolicy\4\

A.2. アプリケーション/ホストの app.config/web.config の先頭に次のセクションを追加します (既に configSections 要素がある場合は、それにセクションを追加します。

<configSections>
  <section name="oracle.dataaccess.client"
    type="System.Data.Common.DbProviderConfigurationHandler, System.Data, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
</configSections>

A.3. アプリケーション/ホストの app.config/web.config の末尾に次のセクションを追加します。

A.4. ODAC112030Xcopy のフォルダーから次を実行します。

configure.bat odp.net4 somename

上記の「somename」として oraclehome112030_32 または oraclehome112030_64 を使用することをお勧めします。

<system.data>
  <DbProviderFactories>
    <!-- Remove in case this is already defined in machine.config -->
    <remove invariant="Oracle.DataAccess.Client" />
    <add name="Oracle Data Provider for .NET"
         invariant="Oracle.DataAccess.Client"
         description="Oracle Data Provider for .NET"
         type="Oracle.DataAccess.Client.OracleClientFactory, Oracle.DataAccess, Version=4.112.3.0, Culture=neutral, PublicKeyToken=89b483f429c47342"/>
  </DbProviderFactories>
</system.data>

<oracle.dataaccess.client>
  <settings>
    <add name="bool" value="edmmapping number(1,0)" />
    <add name="byte" value="edmmapping number(3,0)" />
    <add name="int16" value="edmmapping number(5,0)" />
    <add name="int32" value="edmmapping number(10,0)" />
    <add name="int64" value="edmmapping number(19,0)" />
    <add name="int16" value="edmmapping number(38,0)" />
    <add name="int32" value="edmmapping number(38,0)" />
    <add name="int64" value="edmmapping number(38,0)" />
  </settings>
</oracle.dataaccess.client>




B. Oracle.ManagedDataAccess.Client をデプロイおよび構成する方法。

B.1. ODP.NET_Managed_1120350_Beta.zip をダウンロード

B.1.1. 次のファイルをアプリケーション/ホストの bin/setup フォルダーに抽出します。

B.1.1.1. Oracle.ManagedDataAccess.dll

B.1.1.2. x64\Oracle.ManagedDataAccessDTC.dll または x86\Oracle.ManagedDataAccessDTC.dll

B.2. アプリケーション/ホストの app.config/web.config の先頭に次のセクションを追加します (既に configSections 要素がある場合は、それにセクションを追加します。

<configSections>
  <section name="oracle.manageddataaccess.client"
    type="OracleInternal.Common.ODPMSectionHandler, Oracle.ManagedDataAccess, Version=4.112.3.50, Culture=neutral, PublicKeyToken=89b483f429c47342" />
</configSections>

B.3. アプリケーション/ホストの app.config/web.config の末尾に次のセクションを追加します。

<system.data>
  <DbProviderFactories>
    <!-- Remove in case this is already defined in machine.config -->
    <remove invariant="Oracle.ManagedDataAccess.Client" />
    <add name="ODP.NET, Managed Driver"
         invariant="Oracle.ManagedDataAccess.Client"
         description="Oracle Data Provider for .NET, Managed Driver"
         type="Oracle.ManagedDataAccess.Client.OracleClientFactory, Oracle.ManagedDataAccess, Version=4.112.3.50, Culture=neutral, PublicKeyToken=89b483f429c47342" />
  </DbProviderFactories>
</system.data>

<oracle.manageddataaccess.client>
  <version number="*">
    <settings>
      <!-- Set this path if you are using TNS aliases as connection strings (not recommended) -->
      <!-- Instead you can use "SERVER_NAME:PORT/SERVICE_NAME" as your data source -->
      <setting name="TNS_ADMIN" value="C:\"/>
    </settings>
    <edmMappings>
      <edmMapping dataType="number">
        <add name="bool" precision="1"/>
        <add name="byte" precision="2" />
        <add name="int16" precision="5" />
      </edmMapping>
    </edmMappings>
  </version>
</oracle.manageddataaccess.client>




C. 構築する場合:

C.1。このセクションを EDMX のアセンブリの app.config に追加します。

(Oracleでこれを試したことはありません。管理されたDataAccess.Clientはまだです)

<oracle.dataaccess.client>
  <settings>
    <add name="bool" value="edmmapping number(1,0)" />
    <add name="byte" value="edmmapping number(3,0)" />
    <add name="int16" value="edmmapping number(5,0)" />
    <add name="int32" value="edmmapping number(10,0)" />
    <add name="int64" value="edmmapping number(19,0)" />
    <add name="int16" value="edmmapping number(38,0)" />
    <add name="int32" value="edmmapping number(38,0)" />
    <add name="int64" value="edmmapping number(38,0)" />
  </settings>
</oracle.dataaccess.client>

C.2. Oracle.xsd という名前のファイルを、次の内容で同じアセンブリに追加します。

<?xml version="1.0" encoding="utf-8"?>
<xs:schema id="odpnetappconfigmappings" xmlns:xs="http://www.w3.org/2001/XMLSchema">

  <xs:complexType name="addtype">
    <xs:attribute name="name" type="xs:string" />
    <xs:attribute name="value" type="xs:string" />
  </xs:complexType>

  <xs:complexType name="settingstype">
    <xs:sequence minOccurs="0" maxOccurs="unbounded">
      <xs:element name="add" type="addtype" />
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="oracledataaccessclienttype">
    <xs:sequence minOccurs="0" maxOccurs="1">
      <xs:element name="settings" type="settingstype" />
    </xs:sequence>
  </xs:complexType>

  <xs:element name="oracle.dataaccess.client" type="oracledataaccessclienttype" />

</xs:schema>

C.3. 上記の XSD を上記の app.config のスキーマ リストに追加します。

C.4. ビルドが成功しているにもかかわらず、ビルド中にブール値マッピングのエラーが発生する場合は、app.config マッピングを Visual Studio の devenv.exe.config に追加します。

C.5. Oracle.ManagedDataAccess.Client を使用する場合は、ビルドの前に EDMX のデータ プロバイダー属性を手動で編集するか (これは試していません)、実行時にコンテキストを作成する前に編集し、MSSL を編集済みのコピーからではなくロードします。リソース (これは機能しているようで、同様のトリックを使用して、異なる DB プロバイダーにロードする MSSL を選択します)。




D. デザイナーのサポート:

D.1。win64_11gR2_client.zipまたはwin32_11gR2_client.zipをダウンロードしてインストールします。

D.1.1. インストールの種類として「管理者」を選択します。

D.2. ODTをダウンロードしてインストールします。




Windows 7 x64 を搭載した空のマシン (VM) でこれ (A と B) を試しました。

この手順は、Windows x64 上の x86 バージョンの Oracle.DataAccess.Client では機能しないようです。

この手順は、Windows x64 上の x64 バージョンの Oracle.DataAccess.Client と、両方のバージョンの Oracle.ManagedDataAccess.Client で機能するようです。

于 2012-12-05T10:25:27.877 に答える
13

アップデート:

Oracle.DataAccess.Client からOracle.ManagedDataAccess.Client v12.1.0 (12c) への簡単な移行:

編集: マネージド ODAC v12c Release 1 のダウンロード リンク


winx64_12c_client.zipまたはwinnt_12c_client32.zip をダウンロードして解凍し、VMに (フル (管理者) インストールまたは ODP.NET コンポーネントを使用したカスタム インストール、クライアント インストールにはこのコンポーネントが含まれていません) をインストールすると、以下のフォルダーが見つかります\odp.net\managed。 「クライアント」フォルダ。

このフォルダ内にはcommon\Oracle.ManagedDataAccess.dllx86\Oracle.ManagedDataAccessDTC.dllとがありx64\Oracle.ManagedDataAccessDTC.dllます。

bin ディレクトリにコピーOracle.ManagedDataAccess.dllし、x86/x64 bin ディレクトリの下の正しいプラットフォームをコピーするOracle.ManagedDataAccessDTC.dllか、クライアントごとに、その特定の DLL の正しいプラットフォームを GAC にインストールし、bin を AnyCPU のままにします。

新しい DLL のアセンブリ バージョンは4.121.1.0で、PublicKeyToken は同じようです (チェックはしていませんが、変更しなくても機能しました)。

前と同様に、このセクションをapp.config configuration/configSections (app.config ファイルの先頭)に追加します。

<configuration>
   <configSections>

セクション:

    <section name="oracle.manageddataaccess.client"
        type="OracleInternal.Common.ODPMSectionHandler, Oracle.ManagedDataAccess, Version=4.121.1.0, Culture=neutral, PublicKeyToken=89b483f429c47342" />

そして次で閉じます:

</configSections>

system.data/DbProviderFactories の下 (上記の後):

<system.data>
  <DbProviderFactories>

追加:

    <remove invariant="Oracle.DataAccess.Client" />
    <remove invariant="Oracle.ManagedDataAccess.Client" />

machine.config に競合がないことを確認するには

それから加えて:

  <add name="ODP.NET, Managed Driver" invariant="Oracle.DataAccess.Client"
       description="Oracle Data Provider for .NET, Managed Driver"
       type="Oracle.ManagedDataAccess.Client.OracleClientFactory, Oracle.ManagedDataAccess, Version=4.121.1.0, Culture=neutral, PublicKeyToken=89b483f429c47342" />

そして次で閉じます:

  </DbProviderFactories>
</system.data>

Oracle.DataAccess.Clientofficial の代わりに invariant として使用したことに注意Oracle.ManagedDataAccess.Clientしてください。これは、古いアンマネージド クライアントの代わりに新しいマネージド クライアントを使用するように、すべての EDMX を変更してアセンブリを再コンパイルしたくないためです。

次に、次のセクション (上記の後に) を app.config に追加します。

 <oracle.manageddataaccess.client>
    <version number="*">
      <edmMappings>
        <edmMapping dataType="number">
          <add name="bool" precision="1"/>
          <add name="byte" precision="2" />
          <add name="int16" precision="5" />
        </edmMapping>
      </edmMappings>
    </version>
  </oracle.manageddataaccess.client>

これは私の最初のテストに合格しましたが、まだ完全にはテストしていません。

于 2013-08-12T17:57:08.277 に答える