C# OLEDB连接的填充模式不';更改表后不进行更改(Oracle)
我在将OleDbConnection与oracle数据库结合使用时遇到问题。 当我使用OleDbConnection的FillSchema方法请求现有表的模式时,结果似乎以某种方式被缓存 要重现问题,您需要分步骤执行以下操作: 创建一个名为cachetest的表,其中包含一列 通过FillSchema在代码中请求表cachetest的模式 通过alter table cachetest add column2 char(3)添加列来更改表 再次请求cachetest的架构。架构不包含列2C# 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 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时不会出现此问题
你知道如何解决这个问题吗
向马丁问好