RefreshSchema
Метод обновляет автоматически сгенерированные SQL-операторы, связанные с указанным объектом DbCommandBuilder.
Если текст SQL-запроса в DbDataAdapter был изменен, то для приведения в соответствие с ним автоматически сгенерированных объектов GetDeleteCommand, GetInsertCommand, GetUpdateCommand надо выполнить метод RefreshSchema
, потому что DbDataAdapter не получает сигнал об изменении связанного с ним свойства SelectCommand.CommandText.
Вызов метода RefreshSchema
не приводит к немедленному обновлению сгенерированных команд – просто устанавливается флаг в DbCommandBuilder, что логика генерации команд изменилась. DbCommandBuilder будет реально обновлять сгенерированные команды в момент вызова метода Update
объекта DbDataAdapter или при вызове одного из методов Get
/Delete
/Insert
/UpdateCommand
объекта DbCommandBuilder.
Синтаксис
public virtual void RefreshSchema();
Возвращаемое значение
Значение типа void.
Исключения
Отсутствуют.
Пример
// C# using System; using System.Data; using System.Data.Common; class CommandBuilderSample { static void Main() { // Создание фабрики классов провайдера DbProviderFactory factory = DbProviderFactories.GetFactory("System.Data.LinterClient"); // Соединение с БД DbConnection con = factory.CreateConnection(); con.ConnectionString = "DataSource=LOCAL;UserID=SYSTEM;Password=MANAGER8"; con.Open(); DbCommand cmd = factory.CreateCommand(); cmd.CommandText = "select MAKE, PERSONID from AUTO"; cmd.Connection = con; DbDataAdapter adapter = factory.CreateDataAdapter(); adapter.SelectCommand = cmd; // Связывание объектов DbDataAdapter и DbCommandBuilder DbCommandBuilder builder = factory.CreateCommandBuilder(); builder.DataAdapter = adapter; // Отображение автоматически сгенерированных команд Console.WriteLine(builder.GetInsertCommand().CommandText); Console.WriteLine(builder.GetUpdateCommand().CommandText); Console.WriteLine(builder.GetDeleteCommand().CommandText); Console.WriteLine(); // Изменение SELECT-запроса cmd.CommandText = "select MODEL, PERSONID from AUTO"; builder.RefreshSchema(); // Отображение новых команд Console.WriteLine(builder.GetInsertCommand().CommandText); Console.WriteLine(builder.GetUpdateCommand().CommandText); Console.WriteLine(builder.GetDeleteCommand().CommandText); Console.WriteLine(); // Освобождение ресурсов builder.Dispose(); // Закрытие подключения к БД con.Close(); } }