source

ODP 도입 및 설정설치 없이 엔티티 프레임워크와 함께 동작하는 NET

lovecheck 2023. 3. 8. 21:17
반응형

ODP 도입 및 설정설치 없이 엔티티 프레임워크와 함께 동작하는 NET

ODP를 어떻게 배치 및 설정할 수 있습니까?엔티티 프레임워크와 함께 설치하지 않아도 NET이 작동합니까?

A. Oracle 도입 및 구성 방법데이터 액세스클라이언트?

B. Oracle 도입 및 구성 방법Managed Data Access.클라이언트?

C. Oracle SSDL을 사용하여 EDMX를 사용하여 빌드하려면 어떻게 해야 합니까?

D. 디자이너 지원을 위해 무엇을 설치해야 합니까?

이 답변에는 필요한 모든 절차가 요약되어 있습니다(바람직하게는).그 중 많은 것이 온라인상의 다양한 장소에서 문서화되어 있기 때문에 검색 시간을 절약할 수 있습니다.

A. Oracle 도입 및 구성 방법데이터 액세스고객.

A.1. ODAC112030Xcopy_64bit.zip 또는 ODAC112030Xcopy_32bit.zip을 다운로드합니다.

A.1.1. zip 파일 내의 다음 폴더의 내용을 응용 프로그램/호스트의 bin/setup 폴더에 추출합니다.

A.1.1. 인스턴트 클라이언트_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

위의 '소면'으로 oraclehome 112030_32 또는 oraclehome 112030_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 도입 및 구성 방법Managed Data Access.고객.

B.1. ODP를 다운로드합니다.NET_Managed_1120350_Beta.zip

B.1.1. 다음 파일을 응용 프로그램/호스트의 bin/setup 폴더에 추출합니다.

B.1.1.1.오라클Managed Data Access.dll

B.1.1.2. x64\Oracle.관리 데이터 액세스DTC.dll 또는 x86\Oracle.관리 데이터 액세스DTC.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에 추가합니다.

(오라클에서는 시도하지 않았습니다.Managed Data Access.아직 클라이언트)

<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. 빌드가 성공하더라도 빌드 중에 부울 매핑 오류가 발생하는 경우 Visual Studio의 devenv.exe.config에 app.config 매핑을 추가합니다.

C.5. Oracle을 사용하고 싶은 경우.Managed Data Access.클라이언트는 빌드 전에 EDMX에서 데이터 공급자 속성을 수동으로 편집하거나(아직 시도하지 않았습니다), 실행 시 Context를 작성하기 전에 편집한 복사본에서 MSSL을 로드합니다(이것은 효과가 있는 것 같습니다.또, 다른 DB 공급자에 로드할 MSSL을 선택하는 경우에도 같은 방법을 사용합니다).




D. 설계자 지원:

D.1. win64_11gR2_client.zip 또는 win32_11gR2_client.zip을 다운로드하여 설치합니다.

D.1.1. 설치 유형으로 "관리자"를 선택합니다.

D.2. ODT를 다운로드하여 설치합니다.




Windows 7 x 64 를 사용하는 빈 머신(VM)으로, A 와 B 를 사용해 보았습니다.

이 절차는 x86 버전의 Oracle에서는 작동하지 않는 것 같습니다.데이터 액세스Windows x64 상의 클라이언트.

이 절차는 x64 버전의 Oracle에서 작동하는 것 같습니다.데이터 액세스Windows x64 및 두 버전의 Oracle을 모두 사용하는 클라이언트.Managed Data Access.고객.

업데이트:

Oracle로부터의 이행.데이터 액세스클라이언트에서 Oracle로Managed Data Access.클라이언트 v12.1.0 (12c)의 간단한 방법:

편집: 관리 대상 ODAC v12c Release 1 다운로드 링크.


winx64_12c_client.zip 또는 winnt_12c_client32.zip을 다운로드한 경우 압축을 풀고 ODP를 사용하여 전체(admin) 설치 또는 사용자 지정 설치를 수행합니다.NET 컴포넌트, 클라이언트인스톨에는 이 컴포넌트가 포함되어 있지 않습니다).폴더는 VM에 있습니다.\odp.net\managed"클라이언트" 폴더 아래에 있습니다.

이 폴더에는common\Oracle.ManagedDataAccess.dll,x86\Oracle.ManagedDataAccessDTC.dll그리고.x64\Oracle.ManagedDataAccessDTC.dll.

알았다.Oracle.ManagedDataAccess.dll올바른 플랫폼을 복사하거나 둘 중 하나입니다.Oracle.ManagedDataAccessDTC.dllx86/x64 bin 디렉토리 또는 클라이언트별로 해당 특정 DLL의 올바른 플랫폼을 GAC에 설치하고 bin을 AnyCPU로 유지합니다.

새로운 DLL의 어셈블리버전은 4.121.1.0, 공개키토큰은 같은 것 같습니다(체크하지 않았지만 변경하지 않아도 동작했습니다).

이전과 같이 이 섹션을 app.config 설정/config Sections(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.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>

이것은 초기 테스트에 합격했지만, 아직 충분히 테스트하지 않았습니다.

언급URL : https://stackoverflow.com/questions/13721025/deploying-and-configuring-odp-net-to-work-without-installation-with-entity-frame

반응형