ConflictOption
Предоставляет или устанавливает значение типа ConflictOption, которое используется объектом DbCommandBuilder.
Декларация
public virtual ConflictOption ConflictOption {get; set;};
Допустимые значения свойства ConflictOption приведены в таблице 34.
| Значение | Описание |
|---|---|
|
(по умолчанию) |
Операторы обновления и удаления будут включать все столбцы, по которым может осуществляться поиск (т.е. все столбцы, которые возвращает SelectCommand, будут использованы в опции WHERE запроса UpdateCommand или DeleteCommand) (за исключением BLOB-столбцов). Эквивалентно заданию CompareAllValuesUpdate | CompareAllValuesDelete |
CompareRowVersion | Если в таблице имеются какие-либо столбцы типа Timestamp, то они используются в предложении WHERE для всех созданных операторов обновления. Эквивалентно заданию CompareRowVersionUpdate | CompareRowVersionDelete ПримечаниеВ СУБД ЛИНТЕР столбцы Timestamp отсутствуют, поэтому в предложении WHERE будут использованы только столбцы, входящие в первичный ключ |
OverwriteChanges | Все операторы обновления и удаления включают только столбцы с атрибутом PrimaryKey в конструкции WHERE. Если не определен ни один столбец с атрибутом PrimaryKey, то все столбцы, по которым может осуществляться поиск, будут включены в предложение WHERE. Это эквивалентно OverwriteChangesUpdate | OverwriteChangesDelete |
Значение свойства
Значение типа ConflictOption.
Исключения
ArgumentOutOfRangeException | Недопустимое значение свойства. |
Пример
// 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 MODEL, PERSONID FROM AUTO;";
cmd.Connection = con;
DbDataAdapter adapter = factory.CreateDataAdapter();
adapter.SelectCommand = cmd;
// Связывание объектов DbDataAdapter и DbCommandBuilder
DbCommandBuilder builder = factory.CreateCommandBuilder();
builder.DataAdapter = adapter;
// ConflictOption.CompareAllSearchableValues
builder.ConflictOption = ConflictOption.CompareAllSearchableValues;
Console.WriteLine(builder.ConflictOption);
Console.WriteLine(cmd.CommandText);
Console.WriteLine(builder.GetUpdateCommand().CommandText);
Console.WriteLine();
// ConflictOption.CompareRowVersion
builder.ConflictOption = ConflictOption.CompareRowVersion;
builder.RefreshSchema();
Console.WriteLine(builder.ConflictOption);
Console.WriteLine(cmd.CommandText);
Console.WriteLine(builder.GetUpdateCommand().CommandText);
Console.WriteLine();
// ConflictOption.OverwriteChanges
builder.ConflictOption = ConflictOption.OverwriteChanges;
builder.RefreshSchema();
Console.WriteLine(builder.ConflictOption);
Console.WriteLine(cmd.CommandText);
Console.WriteLine(builder.GetUpdateCommand().CommandText);
Console.WriteLine();
// Изменение свойства SelectCommand
cmd.CommandText = "SELECT MODEL, MAKE, PERSONID FROM AUTO;";
// Обновление схемы
builder.RefreshSchema();
Console.WriteLine(builder.ConflictOption);
Console.WriteLine(cmd.CommandText);
Console.WriteLine(builder.GetUpdateCommand().CommandText);
Console.WriteLine();
// Освобождение ресурсов
builder.Dispose();
// Закрытие подключения к БД
con.Close();
}
}
Результат выполнения примера:
CompareAllSearchableValues
SELECT MODEL, PERSONID FROM AUTO;
UPDATE "SYSTEM"."AUTO" SET "MODEL" = :ret1, "PERSONID" = :ret2 WHERE (((:ret3 = 1 AND "MODEL"
IS NULL) OR ("MODEL" = :ret4)) AND ("PERSONID" = :ret5))
CompareRowVersion
SELECT MODEL, PERSONID FROM AUTO;
UPDATE "SYSTEM"."AUTO" SET "MODEL" = :ret1, "PERSONID" = :ret2 WHERE (("PERSONID" = :ret3))
OverwriteChanges
SELECT MODEL, PERSONID FROM AUTO;
UPDATE "SYSTEM"."AUTO" SET "MODEL" = :ret1, "PERSONID" = :ret2 WHERE (("PERSONID" = :ret3))
OverwriteChanges
SELECT MODEL, MAKE, PERSONID FROM AUTO;
UPDATE "SYSTEM"."AUTO" SET "MODEL" = :ret1, "MAKE" = :ret2, "PERSONID" = :ret3
WHERE (("PERSONID" = :ret4))