ConflictOption
Предоставляет или устанавливает значение типа ConflictOption, которое используется объектом DbCommandBuilder.
Декларация
public virtual ConflictOption ConflictOption {get; set;};
Допустимые значения свойства ConflictOption приведены в таблице 36.
Значение | Описание |
---|---|
(по умолчанию) |
Операторы обновления и удаления будут включать все столбцы, по которым может осуществляться поиск (т.е. все столбцы, которые возвращает 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))