public void Записать() { //Установка блокировки элемента на горизантально масштабированный кластер. //Опционально введение тайм аута на запись одного и того же объекта, не чаще раза в 5-секунд. Защита от спама. упращение алгоритма блокировки. //Выделение сервиса для блокировки элемента и генерации кода //Выполнение операций контроля без обращений к sql-серверу. //Контроль конфликта блокировок. //Контроль загрузки булкинсертом гетерогенной коллекции. //Контроль уникальности кода для Документов. //Контроль уникальности номера для документов, в границах префикса. //Контроль владельца, он не может быть группой. //Контроль владельца он должен быть задан. //Контроль родителя он должен быть группой. //Контроль количества уровней, должен соотвествовать метаданным. //Контроль версии, объект не должен был быть записан перед чтением текущей записи, алгоритм версионника. //Контроль уникальности ссылки //Контроль зацикливания //Опционально контроль битых ссылок. //Соблюдейние транзакционности. ПередЗаписью. Открытие транзации. Валидации. ПриЗаписи. Фиксация транзакции. Информирование о записи элемента. using (var Подключение = new SqlConnection(СтрокаСоединения)) { Подключение.Open(); using (var Команда = Подключение.CreateCommand()) { if (_ЭтоНовый) { Команда.CommandText = @" Insert Into _Document23149( _IDRRef /*,_Version*/ ,_Marked ,_IsMetadata ,_Number ,_Fld24332RRef ,_Fld24333RRef ,_Fld24334RRef ,_Fld24335RRef ,_Fld24336RRef ,_Fld24337 ,_Fld24338 ,_Fld24339 ,_Fld24340 ,_Fld24341 ,_Fld24342 ,_Fld24343 ,_Fld24344 ,_Fld24345 ,_Fld24346 ,_Fld24347 ,_Fld24348RRef ,_Fld24349 ,_Fld24350 ,_Fld24351 ,_Fld24352 ,_Fld24353 ,_Fld24354RRef) Values( @Ссылка /*,@Версия*/ ,@ПометкаУдаления ,@Номер ,@Организация ,@Сотрудник ,@ФизЛицо ,@Страхователь ,@ВидПособия ,@ПериодРаботыС ,@ПериодРаботыПо ,@СтраховательПрекратилДеятельность ,@ИныеПричиныОтсутствияСправки ,@СтраховойНомерПФР ,@ДатаРождения ,@Фамилия ,@Имя ,@Отчество ,@Адрес ,@Телефон ,@ВидДокумента ,@СерияДокумента ,@НомерДокумента ,@ДатаВыдачиДокумента ,@КемВыданДокумент ,@Комментарий ,@Ответственный)" ; } else { Команда.CommandText = @" Update _Document23149 Set /*_IDRRef = @Ссылка*/ /*,_Version = @Версия*/ _Marked = @ПометкаУдаления ,_Number = @Номер ,_Fld24332RRef = @Организация ,_Fld24333RRef = @Сотрудник ,_Fld24334RRef = @ФизЛицо ,_Fld24335RRef = @Страхователь ,_Fld24336RRef = @ВидПособия ,_Fld24337 = @ПериодРаботыС ,_Fld24338 = @ПериодРаботыПо ,_Fld24339 = @СтраховательПрекратилДеятельность ,_Fld24340 = @ИныеПричиныОтсутствияСправки ,_Fld24341 = @СтраховойНомерПФР ,_Fld24342 = @ДатаРождения ,_Fld24343 = @Фамилия ,_Fld24344 = @Имя ,_Fld24345 = @Отчество ,_Fld24346 = @Адрес ,_Fld24347 = @Телефон ,_Fld24348RRef = @ВидДокумента ,_Fld24349 = @СерияДокумента ,_Fld24350 = @НомерДокумента ,_Fld24351 = @ДатаВыдачиДокумента ,_Fld24352 = @КемВыданДокумент ,_Fld24353 = @Комментарий ,_Fld24354RRef = @Ответственный 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("Телефон", Телефон); Команда.Parameters.AddWithValue("СерияДокумента", СерияДокумента); Команда.Parameters.AddWithValue("НомерДокумента", НомерДокумента); Команда.Parameters.AddWithValue("ДатаВыдачиДокумента", ДатаВыдачиДокумента); Команда.Parameters.AddWithValue("КемВыданДокумент", КемВыданДокумент); Команда.Parameters.AddWithValue("Комментарий", Комментарий); Команда.ExecuteNonQuery(); } } }
public void Записать() { //Установка блокировки элемента на горизантально масштабированный кластер. //Опционально введение тайм аута на запись одного и того же объекта, не чаще раза в 5-секунд. Защита от спама. упращение алгоритма блокировки. //Выделение сервиса для блокировки элемента и генерации кода //Выполнение операций контроля без обращений к sql-серверу. //Контроль конфликта блокировок. //Контроль загрузки булкинсертом гетерогенной коллекции. //Контроль уникальности кода для Документов. //Контроль уникальности номера для документов, в границах префикса. //Контроль владельца, он не может быть группой. //Контроль владельца он должен быть задан. //Контроль родителя он должен быть группой. //Контроль количества уровней, должен соотвествовать метаданным. //Контроль версии, объект не должен был быть записан перед чтением текущей записи, алгоритм версионника. //Контроль уникальности ссылки //Контроль зацикливания //Опционально контроль битых ссылок. //Соблюдейние транзакционности. ПередЗаписью. Открытие транзации. Валидации. ПриЗаписи. Фиксация транзакции. Информирование о записи элемента. using (var Подключение = new SqlConnection(СтрокаСоединения)) { Подключение.Open(); using (var Команда = Подключение.CreateCommand()) { if (_ЭтоНовый) { Команда.CommandText = @" Insert Into _Document23144( _IDRRef /*,_Version*/ ,_Marked ,_IsMetadata ,_Number ,_Fld24171RRef ,_Fld24172RRef ,_Fld24173RRef ,_Fld24174RRef ,_Fld24175RRef ,_Fld24176RRef ,_Fld24177 ,_Fld24178 ,_Fld24179 ,_Fld24180 ,_Fld24181 ,_Fld24182 ,_Fld24183 ,_Fld24184 ,_Fld24185 ,_Fld24186 ,_Fld24187 ,_Fld24188RRef) Values( @Ссылка /*,@Версия*/ ,@ПометкаУдаления ,@Номер ,@Организация ,@Сотрудник ,@ФизЛицо ,@ВидПособия ,@Руководитель ,@ДолжностьРуководителя ,@РегистрационныйНомерФСС ,@ДополнительныйКодФСС ,@КодПодчиненностиФСС ,@НаименованиеТерриториальногоОрганаФСС ,@АдресОрганизации ,@СтраховойНомерПФР ,@Фамилия ,@Имя ,@Отчество ,@Адрес ,@Комментарий ,@Ответственный)" ; } else { Команда.CommandText = @" Update _Document23144 Set /*_IDRRef = @Ссылка*/ /*,_Version = @Версия*/ _Marked = @ПометкаУдаления ,_Number = @Номер ,_Fld24171RRef = @Организация ,_Fld24172RRef = @Сотрудник ,_Fld24173RRef = @ФизЛицо ,_Fld24174RRef = @ВидПособия ,_Fld24175RRef = @Руководитель ,_Fld24176RRef = @ДолжностьРуководителя ,_Fld24177 = @РегистрационныйНомерФСС ,_Fld24178 = @ДополнительныйКодФСС ,_Fld24179 = @КодПодчиненностиФСС ,_Fld24180 = @НаименованиеТерриториальногоОрганаФСС ,_Fld24181 = @АдресОрганизации ,_Fld24182 = @СтраховойНомерПФР ,_Fld24183 = @Фамилия ,_Fld24184 = @Имя ,_Fld24185 = @Отчество ,_Fld24186 = @Адрес ,_Fld24187 = @Комментарий ,_Fld24188RRef = @Ответственный 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("Комментарий", Комментарий); Команда.ExecuteNonQuery(); } } }