部署和配置ODP.NET与实体框架没有安装工作(Deploying and Configuring

2019-06-21 14:49发布

你如何部署和配置ODP.NET无需安装实体框架的工作?

A.如何部署和配置Oracle.DataAccess.Client?

B.如何部署和配置Oracle.ManagedDataAccess.Client?

C.你需要什么,以使做构建与EDMXs与Oracle SSDLs工作?

D.你有什么需要安装的设计器支持?

Answer 1:

这个答案汇总(希望)所有必需的步骤,其中许多文件在不同的地方在线和可能挽救谷歌搜索的人小时。

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 \

A2。 将以下部分添加到您的应用程序/主机的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

我建议使用oraclehome112030_32或oraclehome112030_64作为上述“somename”。

<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。 64 \ 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。 如果您想使用在EDMX Oracle.ManagedDataAccess.Client,无论是编辑数据提供商属性在运行时间和编辑的副本加载社会保障和劳动部建立(我没有试过)或之前,创设情境编辑手动之前,而不是从资源(这似乎工作,我也用了类似的伎俩选择哪个MSSL加载不同的DB提供)。




D.对于设计师的支持:

D.1。 下载win64_11gR2_client.zip或win32_11gR2_client.zip和安装。

D.1.1。 选择“管理员”作为安装类型。

D.2。 下载ODT和安装。




我与Windows 7 64位系统尝试这种(A和B)空白机(VM)上。

这个过程似乎并没有在Windows 64 Oracle.DataAccess.Client的x86版工作。

该过程似乎与Oracle.DataAccess.Client的Windows x64上,并与Oracle.ManagedDataAccess.Client的两个版本的x64版本的工作。



Answer 2:

更新:

从迁移到Oracle.DataAccess.Client Oracle.ManagedDataAccess.Client v12.1.0(12C)的简单方法:

编辑: 下载链接管理ODAC V12c处于第1版 。


如果您下载winx64_12c_client.zip或winnt_12c_client32.zip ,提取出来并在虚拟机上安装(全(管理员)安装或使用ODP.NET组件自定义安装,客户端安装不包括此组件),你会发现文件夹\odp.net\managed “客户”文件夹下。

在此文件夹,你会发现common\Oracle.ManagedDataAccess.dllx86\Oracle.ManagedDataAccessDTC.dllx64\Oracle.ManagedDataAccessDTC.dll

复制Oracle.ManagedDataAccess.dll到你的bin目录,并可以复制的正确的平台Oracle.ManagedDataAccessDTC.dll您的x86 / x64的bin目录下,或者,每个客户端,安装特定的DLL到GAC正确的平台,让您的仓作为AnyCPU。

新的DLL的程序集的版本是4.121.1.0,该公钥似乎是相同的(没有检查它,但它改变它的工作没有我)。

和以前一样,加上这部分您的app.config配置/ 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.Client作为不变的,而不是官方Oracle.ManagedDataAccess.Client 。 这是因为我不想改变我所有的EDMXs和重新编译他们的组件,让他们使用,而不是旧的非托管一个新的托管客户端。

然后添加以下部分(以上后)到您的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>

这通过我的初步测试,没有经过彻底尚未虽然。



Answer 3:

安装带有Oracle开发人员工具从下面链接的Visual Studio 32位Oracle数据访问组件(ODAC):

http://www.oracle.com/technetwork/topics/dotnet/utilsoft-086879.html



文章来源: Deploying and Configuring ODP.NET to work without installation with Entity Framework