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