public void Записать()
{
//Установка блокировки элемента на горизантально масштабированный кластер.
//Опционально введение тайм аута на запись одного и того же объекта, не чаще раза в 5-секунд. Защита от спама. упращение алгоритма блокировки.
//Выделение сервиса для блокировки элемента и генерации кода
//Выполнение операций контроля без обращений к sql-серверу.
//Контроль конфликта блокировок.
//Контроль загрузки булкинсертом гетерогенной коллекции.
//Контроль уникальности кода для справочников.
//Контроль уникальности номера для документов, в границах префикса.
//Контроль владельца, он не может быть группой.
//Контроль владельца он должен быть задан.
//Контроль родителя он должен быть группой.
//Контроль количества уровней, должен соотвествовать метаданным.
//Контроль версии, объект не должен был быть записан перед чтением текущей записи, алгоритм версионника.
//Контроль уникальности ссылки
//Контроль зацикливания
//Опционально контроль битых ссылок.
//Соблюдейние транзакционности. ПередЗаписью. Открытие транзации. Валидации. ПриЗаписи. Фиксация транзакции. Информирование о записи элемента.
using (var Подключение = new SqlConnection(СтрокаСоединения))
{
Подключение.Open();
using (var Команда = Подключение.CreateCommand())
{
if(_ЭтоНовый)
{
Команда.CommandText = @"
Insert Into _Reference93(
_IDRRef
/*,_Version*/
,_Marked
,_IsMetadata
,_Code
,_Description
,_Fld1375RRef
,_Fld1378
,_Fld1379
,_Fld1380
,_Fld1381
,_Fld1382
,_Fld1383
,_Fld1384
,_Fld1404
,_Fld1405
,_Fld1406
,_Fld1407
,_Fld1408
,_Fld1412
,_Fld19456
,_Fld19462
,_Fld1411
,_Fld1409RRef
,_Fld1410
,_Fld19455
,_Fld21242
,_Fld21243
,_Fld21244
,_Fld21245
,_Fld21246
,_Fld21247
,_Fld21248
,_Fld21249
,_Fld21250
,_Fld21251
,_Fld21252
,_Fld21253
,_Fld21254
,_Fld21256
,_Fld21257
,_Fld21259RRef
,_Fld21260
,_Fld21262
,_Fld21263
,_Fld21267
,_Fld21268
,_Fld21265
,_Fld22936
,_Fld22937
,_Fld22938
,_Fld22939
,_Fld22940)
Values(
@Ссылка
/*,@Версия*/
,@ПометкаУдаления
,@Предопределенный
,@Код
,@Наименование
,@ТипНастройки
,@ПроизводитьПриемСообщений
,@ПроизводитьОтправкуСообщений
,@КоличествоЭлементовВТранзакцииНаВыгрузкуДанных
,@КоличествоЭлементовВТранзакцииНаЗагрузкуДанных
,@ВыполнятьАрхивациюФайловОбмена
,@ПарольНаОтправку
,@ПарольНаПрием
,@КаталогОбменаИнформацией
,@FTPАдресОбмена
,@ПортFTPСоединения
,@ПользовательFTPСоединения
,@ПарольFTPСоединения
,@Комментарий
,@МаксимальныйРазмерОтправляемогоПолучаемогоПакетаЧерезFTP
,@ПассивноеFTPСоединение
,@ПочтовыйАдресПолучателя
,@УчетнаяЗаписьПриемаОтправкиСообщений
,@АвтоматическиЗакачиватьПочтуПриОбмене
,@МаксимальныйРазмерОтправляемогоПакетаЧерезПочту
,@ПравилаОбмена
,@ПравилаОбменаДляПриемника
,@ДобавлениеОбъектовИзФоновогоОбмена
,@КоличествоОбъектовДляФоновогоОбмена
,@OnLineОбмен
,@ТипИнформационнойБазыДляПодключения
,@КаталогИнформационнойБазыДляПодключения
,@ИмяСервераИнформационнойБазыДляПодключения
,@ИмяИнформационнойБазыНаСервереДляПодключения
,@АутентификацияWindowsИнформационнойБазыДляПодключения
,@ПользовательИнформационнойБазыДляПодключения
,@ПарольИнформационнойБазыДляПодключения
,@ВерсияПлатформыИнформационнойБазыДляПодключения
,@РежимОтладкиOnLineОбмена
,@ИмяФайлаПротоколаОбменаOnLineОбмен
,@УчетнаяЗаписьОтправкиСообщенияОбОшибке
,@АдресДляОтправкиСообщенийОбОшибке
,@ПослеОшибкиОтложенногоПроведенияПрекратитьОперации
,@КоличествоОшибокОтложенногоПроведенияДляПрекращенияОперации
,@ВыполнятьДействияПодПолнымиПравами
,@ПроизводитьОтправкуТолькоПриУспешномПриеме
,@ВыполнитьОтложенноеПроведениеДокументовПоРасписанию
,@ПользовательПроксиFTP
,@ПарольПроксиFTP
,@СерверПроксиFTP
,@ПортПроксиFTP
,@ПротоколПроксиFTP)";
}
else
{
Команда.CommandText = @"
Update _Reference93
Set
/*_IDRRef = @Ссылка*/
/*,_Version = @Версия*/
_Marked = @ПометкаУдаления
,_IsMetadata = @Предопределенный
,_Code = @Код
,_Description = @Наименование
,_Fld1375RRef = @ТипНастройки
,_Fld1378 = @ПроизводитьПриемСообщений
,_Fld1379 = @ПроизводитьОтправкуСообщений
,_Fld1380 = @КоличествоЭлементовВТранзакцииНаВыгрузкуДанных
,_Fld1381 = @КоличествоЭлементовВТранзакцииНаЗагрузкуДанных
,_Fld1382 = @ВыполнятьАрхивациюФайловОбмена
,_Fld1383 = @ПарольНаОтправку
,_Fld1384 = @ПарольНаПрием
,_Fld1404 = @КаталогОбменаИнформацией
,_Fld1405 = @FTPАдресОбмена
,_Fld1406 = @ПортFTPСоединения
,_Fld1407 = @ПользовательFTPСоединения
,_Fld1408 = @ПарольFTPСоединения
,_Fld1412 = @Комментарий
,_Fld19456 = @МаксимальныйРазмерОтправляемогоПолучаемогоПакетаЧерезFTP
,_Fld19462 = @ПассивноеFTPСоединение
,_Fld1411 = @ПочтовыйАдресПолучателя
,_Fld1409RRef = @УчетнаяЗаписьПриемаОтправкиСообщений
,_Fld1410 = @АвтоматическиЗакачиватьПочтуПриОбмене
,_Fld19455 = @МаксимальныйРазмерОтправляемогоПакетаЧерезПочту
,_Fld21242 = @ПравилаОбмена
,_Fld21243 = @ПравилаОбменаДляПриемника
,_Fld21244 = @ДобавлениеОбъектовИзФоновогоОбмена
,_Fld21245 = @КоличествоОбъектовДляФоновогоОбмена
,_Fld21246 = @OnLineОбмен
,_Fld21247 = @ТипИнформационнойБазыДляПодключения
,_Fld21248 = @КаталогИнформационнойБазыДляПодключения
,_Fld21249 = @ИмяСервераИнформационнойБазыДляПодключения
,_Fld21250 = @ИмяИнформационнойБазыНаСервереДляПодключения
,_Fld21251 = @АутентификацияWindowsИнформационнойБазыДляПодключения
,_Fld21252 = @ПользовательИнформационнойБазыДляПодключения
,_Fld21253 = @ПарольИнформационнойБазыДляПодключения
,_Fld21254 = @ВерсияПлатформыИнформационнойБазыДляПодключения
,_Fld21256 = @РежимОтладкиOnLineОбмена
,_Fld21257 = @ИмяФайлаПротоколаОбменаOnLineОбмен
,_Fld21259RRef = @УчетнаяЗаписьОтправкиСообщенияОбОшибке
,_Fld21260 = @АдресДляОтправкиСообщенийОбОшибке
,_Fld21262 = @ПослеОшибкиОтложенногоПроведенияПрекратитьОперации
,_Fld21263 = @КоличествоОшибокОтложенногоПроведенияДляПрекращенияОперации
,_Fld21267 = @ВыполнятьДействияПодПолнымиПравами
,_Fld21268 = @ПроизводитьОтправкуТолькоПриУспешномПриеме
,_Fld21265 = @ВыполнитьОтложенноеПроведениеДокументовПоРасписанию
,_Fld22936 = @ПользовательПроксиFTP
,_Fld22937 = @ПарольПроксиFTP
,_Fld22938 = @СерверПроксиFTP
,_Fld22939 = @ПортПроксиFTP
,_Fld22940 = @ПротоколПроксиFTP
Where _IDRRef = @Ссылка";
}
Команда.Parameters.AddWithValue("Ссылка", Ссылка.ToByteArray());
/*Команда.Parameters.AddWithValue("Версия", Версия);*/
Команда.Parameters.AddWithValue("ПометкаУдаления", ПометкаУдаления);
Команда.Parameters.AddWithValue("Предопределенный", Предопределенный);
Команда.Parameters.AddWithValue("Код", Код);
Команда.Parameters.AddWithValue("Наименование", Наименование);
Команда.Parameters.AddWithValue("ТипНастройки", ТипНастройки.Ключ());
Команда.Parameters.AddWithValue("ПроизводитьПриемСообщений", ПроизводитьПриемСообщений);
Команда.Parameters.AddWithValue("ПроизводитьОтправкуСообщений", ПроизводитьОтправкуСообщений);
Команда.Parameters.AddWithValue("КоличествоЭлементовВТранзакцииНаВыгрузкуДанных", КоличествоЭлементовВТранзакцииНаВыгрузкуДанных);
Команда.Parameters.AddWithValue("КоличествоЭлементовВТранзакцииНаЗагрузкуДанных", КоличествоЭлементовВТранзакцииНаЗагрузкуДанных);
Команда.Parameters.AddWithValue("ВыполнятьАрхивациюФайловОбмена", ВыполнятьАрхивациюФайловОбмена);
Команда.Parameters.AddWithValue("ПарольНаОтправку", ПарольНаОтправку);
Команда.Parameters.AddWithValue("ПарольНаПрием", ПарольНаПрием);
Команда.Parameters.AddWithValue("КаталогОбменаИнформацией", КаталогОбменаИнформацией);
Команда.Parameters.AddWithValue("FTPАдресОбмена", FTPАдресОбмена);
Команда.Parameters.AddWithValue("ПортFTPСоединения", ПортFTPСоединения);
Команда.Parameters.AddWithValue("ПользовательFTPСоединения", ПользовательFTPСоединения);
Команда.Parameters.AddWithValue("ПарольFTPСоединения", ПарольFTPСоединения);
Команда.Parameters.AddWithValue("Комментарий", Комментарий);
Команда.Parameters.AddWithValue("МаксимальныйРазмерОтправляемогоПолучаемогоПакетаЧерезFTP", МаксимальныйРазмерОтправляемогоПолучаемогоПакетаЧерезFTP);
Команда.Parameters.AddWithValue("ПассивноеFTPСоединение", ПассивноеFTPСоединение);
Команда.Parameters.AddWithValue("ПочтовыйАдресПолучателя", ПочтовыйАдресПолучателя);
Команда.Parameters.AddWithValue("УчетнаяЗаписьПриемаОтправкиСообщений", УчетнаяЗаписьПриемаОтправкиСообщений.Ссылка);
Команда.Parameters.AddWithValue("АвтоматическиЗакачиватьПочтуПриОбмене", АвтоматическиЗакачиватьПочтуПриОбмене);
Команда.Parameters.AddWithValue("МаксимальныйРазмерОтправляемогоПакетаЧерезПочту", МаксимальныйРазмерОтправляемогоПакетаЧерезПочту);
Команда.Parameters.AddWithValue("ПравилаОбмена",new byte[0]);
Команда.Parameters.AddWithValue("ПравилаОбменаДляПриемника",new byte[0]);
Команда.Parameters.AddWithValue("ДобавлениеОбъектовИзФоновогоОбмена", ДобавлениеОбъектовИзФоновогоОбмена);
Команда.Parameters.AddWithValue("КоличествоОбъектовДляФоновогоОбмена", КоличествоОбъектовДляФоновогоОбмена);
Команда.Parameters.AddWithValue("OnLineОбмен", OnLineОбмен);
Команда.Parameters.AddWithValue("ТипИнформационнойБазыДляПодключения", ТипИнформационнойБазыДляПодключения);
Команда.Parameters.AddWithValue("КаталогИнформационнойБазыДляПодключения", КаталогИнформационнойБазыДляПодключения);
Команда.Parameters.AddWithValue("ИмяСервераИнформационнойБазыДляПодключения", ИмяСервераИнформационнойБазыДляПодключения);
Команда.Parameters.AddWithValue("ИмяИнформационнойБазыНаСервереДляПодключения", ИмяИнформационнойБазыНаСервереДляПодключения);
Команда.Parameters.AddWithValue("АутентификацияWindowsИнформационнойБазыДляПодключения", АутентификацияWindowsИнформационнойБазыДляПодключения);
Команда.Parameters.AddWithValue("ПользовательИнформационнойБазыДляПодключения", ПользовательИнформационнойБазыДляПодключения);
Команда.Parameters.AddWithValue("ПарольИнформационнойБазыДляПодключения", ПарольИнформационнойБазыДляПодключения);
Команда.Parameters.AddWithValue("ВерсияПлатформыИнформационнойБазыДляПодключения", ВерсияПлатформыИнформационнойБазыДляПодключения);
Команда.Parameters.AddWithValue("РежимОтладкиOnLineОбмена", РежимОтладкиOnLineОбмена);
Команда.Parameters.AddWithValue("ИмяФайлаПротоколаОбменаOnLineОбмен", ИмяФайлаПротоколаОбменаOnLineОбмен);
Команда.Parameters.AddWithValue("УчетнаяЗаписьОтправкиСообщенияОбОшибке", УчетнаяЗаписьОтправкиСообщенияОбОшибке.Ссылка);
Команда.Parameters.AddWithValue("АдресДляОтправкиСообщенийОбОшибке", АдресДляОтправкиСообщенийОбОшибке);
Команда.Parameters.AddWithValue("ПослеОшибкиОтложенногоПроведенияПрекратитьОперации", ПослеОшибкиОтложенногоПроведенияПрекратитьОперации);
Команда.Parameters.AddWithValue("КоличествоОшибокОтложенногоПроведенияДляПрекращенияОперации", КоличествоОшибокОтложенногоПроведенияДляПрекращенияОперации);
Команда.Parameters.AddWithValue("ВыполнятьДействияПодПолнымиПравами", ВыполнятьДействияПодПолнымиПравами);
Команда.Parameters.AddWithValue("ПроизводитьОтправкуТолькоПриУспешномПриеме", ПроизводитьОтправкуТолькоПриУспешномПриеме);
Команда.Parameters.AddWithValue("ВыполнитьОтложенноеПроведениеДокументовПоРасписанию", ВыполнитьОтложенноеПроведениеДокументовПоРасписанию);
Команда.Parameters.AddWithValue("ПользовательПроксиFTP", ПользовательПроксиFTP);
Команда.Parameters.AddWithValue("ПарольПроксиFTP", ПарольПроксиFTP);
Команда.Parameters.AddWithValue("СерверПроксиFTP", СерверПроксиFTP);
Команда.Parameters.AddWithValue("ПортПроксиFTP", ПортПроксиFTP);
Команда.Parameters.AddWithValue("ПротоколПроксиFTP", ПротоколПроксиFTP);
Команда.ExecuteNonQuery();
}
}
}