C# OLEDB连接的填充模式不';更改表后不进行更改(Oracle)

C# OLEDB连接的填充模式不';更改表后不进行更改(Oracle),c#,oracle,caching,schema,oledb,C#,Oracle,Caching,Schema,Oledb,我在将OleDbConnection与oracle数据库结合使用时遇到问题。 当我使用OleDbConnection的FillSchema方法请求现有表的模式时,结果似乎以某种方式被缓存 要重现问题,您需要分步骤执行以下操作: 创建一个名为cachetest的表,其中包含一列 通过FillSchema在代码中请求表cachetest的模式 通过alter table cachetest add column2 char(3)添加列来更改表 再次请求cachetest的架构。架构不包含列2 Ole

我在将OleDbConnection与oracle数据库结合使用时遇到问题。 当我使用OleDbConnection的FillSchema方法请求现有表的模式时,结果似乎以某种方式被缓存

要重现问题,您需要分步骤执行以下操作:

创建一个名为cachetest的表,其中包含一列 通过FillSchema在代码中请求表cachetest的模式 通过alter table cachetest add column2 char(3)添加列来更改表 再次请求cachetest的架构。架构不包含列2

OleDbConnection connection = new OleDbConnection(
"Provider=" + "OraOLEDB.Oracle;" 
+"Data Source=" + "datasource" 
+ ";User Id=" + "msp" + ";" 
+ "Password=" + "msp" 
+";ChunkSize=1;" +  "OLEDB.NET=" + "true;");

connection.Open();
DataTable dt = new DataTable("cachetest");

OleDbDataAdapter adapter_oledb = 
         new OleDbDataAdapter("select * from cachetest", connection);

adapter_oledb.FillSchema(dt, SchemaType.Source);

int columncount1 = dt.Columns.Count;

OleDbCommand command = new OleDbCommand("alter table cachetest add column2  char(30)", connection);
 command.ExecuteNonQuery();

 connection.Close();
 OleDbConnection connection2 = new OleDbConnection(
"Provider=" + "OraOLEDB.Oracle;" 
+"Data Source=" + "datasource" 
+ ";User Id=" + "msp" + ";" 
+ "Password=" + "msp" 
+";ChunkSize=1;" +  "OLEDB.NET=" + "true;");

 DataTable dt2 = new DataTable("cachetest");
 connection2.Open();
 OleDbDataAdapter adapter_oledb2 = new OleDbDataAdapter(
        "select * from cachetest", connection2);

 adapter_oledb2.FillSchema(dt2, SchemaType.Source);

 int columncount2 = dt2.Columns.Count;
使用SQL server时不会出现此问题

你知道如何解决这个问题吗

向马丁问好