部署和configurationODP.NET,无需使用entity framework进行安装

如何在不使用Entity Framework进行安装的情况下部署和configurationODP.NET?

A.如何部署和configurationOracle.DataAccess.Client?

B.如何部署和configurationOracle.ManagedDataAccess.Client?

C.为了使EDMXs与Oracle SSDL一起工作,你需要做什么?

D.你需要安装哪些devise器支持?

这个答案总结(希望)所需的所有步骤,其中许多logging在网上的各个地方,可能会节省一些小时的谷歌search。

A.如何部署和configurationOracle.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 

我build议使用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.如何部署和configurationOracle.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.build设:

C.1。 将此部分添加到您的EDMX的程序集的app.config中:

(还没有尝试过使用Oracle。Managed 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。 如果构build期间即使构build成功,但在构build布尔映射时遇到错误,请将app.config映射添加到Visual Studio的devenv.exe.config。

C.5。 如果要使用Oracle.ManagedDataAccess.Client,请在构build之前手动编辑EDMX中的数据提供程序属性(我尚未尝试此操作),或者在运行时创build上下文之前对其进行编辑,并从编辑的副本而不是从资源(这似乎工作,我也使用类似的技巧来select不同的数据库提供程序加载哪个MSSL)。


D.对于devise师的支持:

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

D.1.1。 select“pipe理员”作为安装types。

D.2。 下载ODT并安装。


我在Windows 7 x64的空白机器(VM)上试了这个(A和B)。

此过程似乎不适用于Windows x64上的x86版本的Oracle.DataAccess.Client。

该过程似乎与Windows x64上的x64版本的Oracle.DataAccess.Client一起使用,并且与Oracle.ManagedDataAccess.Client的两个版本都可以一起使用。

更新:

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

编辑: pipe理ODAC v12c版本1的下载链接 。

如果你下载了winx64_12c_client.zip或winnt_12c_client32.zip ,解压缩并安装(完整(pipe理)安装或用ODP.NET组件定制安装,客户端安装不包含这个组件),你会发现文件夹\odp.net\managed在“客户”文件夹下\odp.net\managed

在这个文件夹中,您将findcommon\Oracle.ManagedDataAccess.dllx86\Oracle.ManagedDataAccessDTC.dllx64\Oracle.ManagedDataAccessDTC.dll

Oracle.ManagedDataAccess.dll复制到您的bin目录中,并在您的x86 / x64 bin目录下复制正确的Oracle.ManagedDataAccessDTC.dll平台,或者将每个客户端的特定DLL的正确平台安装到GAC中,将bin保存为AnyCPU。

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

和以前一样,将此部分添加到您的app.configconfiguration/ 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" /> 

并closures:

 </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" /> 

并closures:

  </DbProviderFactories> </system.data> 

注意我使用Oracle.DataAccess.Client作为不变式,而不是正式的Oracle.ManagedDataAccess.Client 。 这是因为我不想更改所有的EDMX,并重新编译它们的程序集以使它们使用新的托pipe客户机而不是旧的非托pipe客户机。

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

这通过了我的初步testing,但还没有彻底testing。

从以下链接安装带有用于Visual Studio的Oracle开发工具的32位Oracle数据访问组件(ODAC)

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