diff --git a/DLL/Oracle/Oracle.DataAccess.dll b/DLL/Oracle/Oracle.DataAccess.dll
index e02415b..05d2075 100644
Binary files a/DLL/Oracle/Oracle.DataAccess.dll and b/DLL/Oracle/Oracle.DataAccess.dll differ
diff --git a/DLL/Oracle/OraOps11w.dll b/DLL/Oracle/OraOps11w.dll
new file mode 100644
index 0000000..3003c67
Binary files /dev/null and b/DLL/Oracle/OraOps11w.dll differ
diff --git a/DLL/Oracle/zh-CHS/Oracle.DataAccess.resources.dll b/DLL/Oracle/zh-CHS/Oracle.DataAccess.resources.dll
index 1346e4a..5f02c8d 100644
Binary files a/DLL/Oracle/zh-CHS/Oracle.DataAccess.resources.dll and b/DLL/Oracle/zh-CHS/Oracle.DataAccess.resources.dll differ
diff --git a/Test/App.config b/Test/App.config
index 77fb4f1..3f27f16 100644
--- a/Test/App.config
+++ b/Test/App.config
@@ -29,7 +29,7 @@
<!--要排除的链接名,多个用逗号分隔,默认空。-->
<add key="XCode.Schema.Exclude" value=""/>
<!--连接名映射,把实体类中的Test2和Test3连接名映射到Test去-->
- <add key="XCode.ConnMaps" value="Common#Oracle,EntityTest@Oracle"/>
+ <!--<add key="XCode.ConnMaps" value="Common#Oracle,EntityTest@Oracle"/>-->
<!--模版引擎配置-->
<!--是否启用调试,默认不启用-->
@@ -52,7 +52,7 @@
<add name="Common3" connectionString="Data Source=Common.db;Version=3;" providerName="Sqlite"/>
<!--启用OLEDB连接池OLE DB Services=-1(EnableAll = -1)-->
<add name="Common4" connectionString="Provider=Microsoft.Jet.OLEDB.4.0; Data Source=~\AppData\Common.mdb;Persist Security Info=False;"/>
- <add name="Oracle" connectionString="Data Source=(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST = jslswb.com)(PORT = 1521))(CONNECT_DATA =(SERVER = DEDICATED)(SERVICE_NAME = ORC)));User ID=admin;Password=admin;" providerName="System.Data.OracleClient"/>
+ <add name="Common" connectionString="Data Source=(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST = jslswb.com)(PORT = 1521))(CONNECT_DATA =(SERVER = DEDICATED)(SERVICE_NAME = ORC)));User ID=admin;Password=admin;" providerName="System.Data.OracleClient"/>
</connectionStrings>
<oracle.dataaccess.client>
<settings>
diff --git a/Test/Program.cs b/Test/Program.cs
index 7e9f9e6..0e0da76 100644
--- a/Test/Program.cs
+++ b/Test/Program.cs
@@ -12,6 +12,9 @@ using System.Text;
using System.Reflection;
using System.Data.Common;
using NewLife.Reflection;
+using XCode.DataAccessLayer;
+using System.Collections.Generic;
+using System.Data.OracleClient;
namespace Test
{
@@ -28,7 +31,7 @@ namespace Test
try
{
#endif
- Test2();
+ Test2();
#if !DEBUG
}
catch (Exception ex)
@@ -67,23 +70,38 @@ namespace Test
static void Test2()
{
- Type type = TypeX.GetType("Oracle.DataAccess.Client.OpsInit", true);
+ //OracleClientFactory d = OracleClientFactory.Instance;
+ //Console.WriteLine(d);
+
+ Type type = null;
+ //type = TypeX.GetType("Oracle.DataAccess.Client.OpsInit", true);
//MethodInfoX mix = MethodInfoX.Create(type, "CheckVersionCompatibility");
//mix.Invoke(null, "2.112.1.0");
//OpsInit.CheckVersionCompatibility("2.112.1.0");
- OracleInit.Initialize();
+ //OracleInit.Initialize();
+
+ List<IDataTable> tables = DAL.Create("Common").Tables;
+ Console.WriteLine(tables);
- //Administrator admin = Administrator.FindAll()[0];
- //Console.WriteLine(admin);
+ //try
+ //{
+ // Assembly asm = Assembly.LoadFile(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Oracle.DataAccess.dll"));
+ // type = asm.GetType("Oracle.DataAccess.Client.OracleClientFactory");
- Assembly asm = Assembly.LoadFile(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Oracle.DataAccess.dll"));
- type = asm.GetType("Oracle.DataAccess.Client.OracleClientFactory");
+ // FieldInfo field = type.GetField("Instance");
+ // //DbProviderFactory df= Activator.CreateInstance(type) as DbProviderFactory;
- FieldInfo field = type.GetField("Instance");
- //DbProviderFactory df= Activator.CreateInstance(type) as DbProviderFactory;
+ // DbProviderFactory df = field.GetValue(null) as DbProviderFactory;
+ // Console.WriteLine(df);
+ //}
+ //catch (Exception ex)
+ //{
+ // Console.WriteLine(ex.ToString());
+ //}
+ //Console.ReadKey(true);
- DbProviderFactory df = field.GetValue(null) as DbProviderFactory;
- Console.WriteLine(df);
+ Administrator admin = Administrator.FindAll()[0];
+ Console.WriteLine(admin);
}
}
}
\ No newline at end of file
diff --git a/Test/Test.csproj b/Test/Test.csproj
index d3513ec..8cee9b8 100644
--- a/Test/Test.csproj
+++ b/Test/Test.csproj
@@ -57,21 +57,16 @@
<CodeAnalysisIgnoreBuiltInRules>true</CodeAnalysisIgnoreBuiltInRules>
</PropertyGroup>
<ItemGroup>
- <Reference Include="Oracle.DataAccess, Version=2.112.1.2, Culture=neutral, PublicKeyToken=89b483f429c47342, processorArchitecture=x86">
- <HintPath>..\DLL\Oracle\Oracle.DataAccess.dll</HintPath>
- </Reference>
<Reference Include="System" />
<Reference Include="System.Configuration" />
<Reference Include="System.Data" />
+ <Reference Include="System.Data.OracleClient" />
<Reference Include="System.Management" />
<Reference Include="System.Web" />
<Reference Include="System.Web.Services" />
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
- <Compile Include="OpsInit.cs" />
- <Compile Include="OracleInit.cs" />
- <Compile Include="OraTrace.cs" />
<Compile Include="Program.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="SerialTest.cs" />
diff --git a/XCode/DataAccessLayer/Common/DbSession.cs b/XCode/DataAccessLayer/Common/DbSession.cs
index 5f25bd2..a31927c 100644
--- a/XCode/DataAccessLayer/Common/DbSession.cs
+++ b/XCode/DataAccessLayer/Common/DbSession.cs
@@ -555,7 +555,7 @@ namespace XCode.DataAccessLayer
cmd.CommandText = sql;
Object rs = cmd.ExecuteScalar();
//return rs == DBNull.Value ? null : rs;
- if (rs == DBNull.Value) return default(T);
+ if (rs == null || rs == DBNull.Value) return default(T);
if (rs is T) return (T)rs;
return (T)Convert.ChangeType(rs, typeof(T));
}
diff --git a/XCode/DataAccessLayer/Database/Oracle.cs b/XCode/DataAccessLayer/Database/Oracle.cs
index 2dfb96a..51c1fc5 100644
--- a/XCode/DataAccessLayer/Database/Oracle.cs
+++ b/XCode/DataAccessLayer/Database/Oracle.cs
@@ -5,9 +5,9 @@ using System.Data.Common;
using System.IO;
using System.Text.RegularExpressions;
using NewLife;
+using NewLife.Configuration;
using XCode.Common;
using XCode.Exceptions;
-using NewLife.Configuration;
namespace XCode.DataAccessLayer
{
@@ -39,7 +39,9 @@ namespace XCode.DataAccessLayer
{
try
{
- _dbProviderFactory = GetProviderFactory("Oracle.DataAccess.dll", "Oracle.DataAccess.Client.OracleClientFactory");
+ String fileName = "Oracle.DataAccess.dll";
+ _dbProviderFactory = GetProviderFactory(fileName, "Oracle.DataAccess.Client.OracleClientFactory");
+ if (_dbProviderFactory != null && DAL.Debug) DAL.WriteDebugLog("Oracleʹ���ļ�����{0}", _dbProviderFactory.GetType().Assembly.Location);
}
catch (FileNotFoundException) { }
catch (Exception ex)
@@ -49,8 +51,17 @@ namespace XCode.DataAccessLayer
}
// �������ַ�ʽ�����Լ��أ�ǰ����ֻ��Ϊ�˼��ٶԳ������ã��ڶ�����Ϊ�˱����һ����û��ע��
- if (_dbProviderFactory == null) _dbProviderFactory = DbProviderFactories.GetFactory("System.Data.OracleClient");
- if (_dbProviderFactory == null) _dbProviderFactory = GetProviderFactory("System.Data.OracleClient.dll", "System.Data.OracleClient.OracleClientFactory");
+ if (_dbProviderFactory == null)
+ {
+ _dbProviderFactory = DbProviderFactories.GetFactory("System.Data.OracleClient");
+ if (_dbProviderFactory != null && DAL.Debug) DAL.WriteDebugLog("Oracleʹ����������{0}", _dbProviderFactory.GetType().Assembly.Location);
+ }
+ if (_dbProviderFactory == null)
+ {
+ String fileName = "System.Data.OracleClient.dll";
+ _dbProviderFactory = GetProviderFactory(fileName, "System.Data.OracleClient.OracleClientFactory");
+ if (_dbProviderFactory != null && DAL.Debug) DAL.WriteDebugLog("Oracleʹ��ϵͳ����{0}", _dbProviderFactory.GetType().Assembly.Location);
+ }
//if (_dbProviderFactory == null) _dbProviderFactory = OracleClientFactory.Instance;
}
}