У меня проблема при использовании OleDbConnection в сочетании с базой данных оракула.Когда я запрашиваю схему существующей таблицы, используя метод FillSchema OleDbConnection, результат, кажется, как-то кэшируется.
Чтобы воспроизвести проблему, вам необходимо выполнить следующие шаги:
создать таблицу с именем cachetest с одним столбцом. Запросить схему проверки таблицы в вашем коде с помощью FillSchema. Измените таблицу, добавивcolumn через 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 ...
У вас есть идея, как решить эту проблему?
С наилучшими пожеланиями Мартин