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();
  }
}