} //Движения исправляемого документа public void Записать() { //Установка блокировки элемента на горизантально масштабированный кластер. //Опционально введение тайм аута на запись одного и того же объекта, не чаще раза в 5-секунд. Защита от спама. упращение алгоритма блокировки. //Выделение сервиса для блокировки элемента и генерации кода //Выполнение операций контроля без обращений к sql-серверу. //Контроль конфликта блокировок. //Контроль загрузки булкинсертом гетерогенной коллекции. //Контроль уникальности кода для Документов. //Контроль уникальности номера для документов, в границах префикса. //Контроль владельца, он не может быть группой. //Контроль владельца он должен быть задан. //Контроль родителя он должен быть группой. //Контроль количества уровней, должен соотвествовать метаданным. //Контроль версии, объект не должен был быть записан перед чтением текущей записи, алгоритм версионника. //Контроль уникальности ссылки //Контроль зацикливания //Опционально контроль битых ссылок. //Соблюдейние транзакционности. ПередЗаписью. Открытие транзации. Валидации. ПриЗаписи. Фиксация транзакции. Информирование о записи элемента. using (var Подключение = new SqlConnection(СтрокаСоединения)) { Подключение.Open(); using (var Команда = Подключение.CreateCommand()) { if (_ЭтоНовый) { Команда.CommandText = @" Insert Into _Document18662( _IDRRef /*,_Version*/ ,_Marked ,_IsMetadata ,_Number ,_Fld21445RRef ,_Fld18669RRef ,_Fld18666RRef ,_Fld18667 ,_Fld18668RRef ,_Fld18670RRef ,_Fld18671 ,_Fld18672 ,_Fld18673 ,_Fld18674 ,_Fld18675 ,_Fld18676RRef ,_Fld18677RRef ,_Fld18678 ,_Fld18679 ,_Fld22995 ,_Fld26773 ,_Fld26774RRef ,_Fld26775) Values( @Ссылка /*,@Версия*/ ,@ПометкаУдаления ,@Номер ,@Сотрудник ,@Физлицо ,@Организация ,@Комментарий ,@Ответственный ,@УдалитьПриказ ,@ДатаОкончанияПособияДоПолутораЛет ,@ДатаОкончанияПособияДоТрехЛет ,@ДатаИзменения ,@КоличествоДетей ,@КоличествоПервыхДетей ,@ДокументОснование ,@Действие ,@ВыплачиватьПособиеДоПолутораЛет ,@ВыплачиватьПособиеДоТрехЛет ,@ОсвобождатьСтавку ,@ДанныеПрошлойВерсии ,@ИсправляемыйДокумент ,@ДвиженияИсправляемогоДокумента)" ; } else { Команда.CommandText = @" Update _Document18662 Set /*_IDRRef = @Ссылка*/ /*,_Version = @Версия*/ _Marked = @ПометкаУдаления ,_Number = @Номер ,_Fld21445RRef = @Сотрудник ,_Fld18669RRef = @Физлицо ,_Fld18666RRef = @Организация ,_Fld18667 = @Комментарий ,_Fld18668RRef = @Ответственный ,_Fld18670RRef = @УдалитьПриказ ,_Fld18671 = @ДатаОкончанияПособияДоПолутораЛет ,_Fld18672 = @ДатаОкончанияПособияДоТрехЛет ,_Fld18673 = @ДатаИзменения ,_Fld18674 = @КоличествоДетей ,_Fld18675 = @КоличествоПервыхДетей ,_Fld18676RRef = @ДокументОснование ,_Fld18677RRef = @Действие ,_Fld18678 = @ВыплачиватьПособиеДоПолутораЛет ,_Fld18679 = @ВыплачиватьПособиеДоТрехЛет ,_Fld22995 = @ОсвобождатьСтавку ,_Fld26773 = @ДанныеПрошлойВерсии ,_Fld26774RRef = @ИсправляемыйДокумент ,_Fld26775 = @ДвиженияИсправляемогоДокумента 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("ДвиженияИсправляемогоДокумента", new byte[0]); Команда.ExecuteNonQuery(); } } }
public void Записать() { //Установка блокировки элемента на горизантально масштабированный кластер. //Опционально введение тайм аута на запись одного и того же объекта, не чаще раза в 5-секунд. Защита от спама. упращение алгоритма блокировки. //Выделение сервиса для блокировки элемента и генерации кода //Выполнение операций контроля без обращений к sql-серверу. //Контроль конфликта блокировок. //Контроль загрузки булкинсертом гетерогенной коллекции. //Контроль уникальности кода для Документов. //Контроль уникальности номера для документов, в границах префикса. //Контроль владельца, он не может быть группой. //Контроль владельца он должен быть задан. //Контроль родителя он должен быть группой. //Контроль количества уровней, должен соотвествовать метаданным. //Контроль версии, объект не должен был быть записан перед чтением текущей записи, алгоритм версионника. //Контроль уникальности ссылки //Контроль зацикливания //Опционально контроль битых ссылок. //Соблюдейние транзакционности. ПередЗаписью. Открытие транзации. Валидации. ПриЗаписи. Фиксация транзакции. Информирование о записи элемента. using (var Подключение = new SqlConnection(СтрокаСоединения)) { Подключение.Open(); using (var Команда = Подключение.CreateCommand()) { if (_ЭтоНовый) { Команда.CommandText = @" Insert Into _Document23151( _IDRRef /*,_Version*/ ,_Marked ,_IsMetadata ,_Number ,_Fld24367RRef ,_Fld24368RRef ,_Fld24369RRef ,_Fld24370RRef ,_Fld24371 ,_Fld24372 ,_Fld24373RRef ,_Fld24374 ,_Fld24375 ,_Fld24376RRef ,_Fld24377 ,_Fld24378RRef ,_Fld24379RRef ,_Fld24380RRef ,_Fld24381 ,_Fld24382RRef ,_Fld24383) Values( @Ссылка /*,@Версия*/ ,@ПометкаУдаления ,@Номер ,@Физлицо ,@Организация ,@ИсполнительныйЛист ,@Действие ,@ДатаИзменения ,@ДатаОкончания ,@СпособРасчетаУдержания ,@Размер ,@Предел ,@ПрожиточныйМинимум ,@ПроцентПочтовогоСбора ,@Тариф ,@СпособПеречисленияПоИсполнительномуЛисту ,@ТарифБанкаНаДенежныеПереводы ,@ПочтовыйСборРассчитыватьПроцентом ,@Ответственный ,@Комментарий)" ; } else { Команда.CommandText = @" Update _Document23151 Set /*_IDRRef = @Ссылка*/ /*,_Version = @Версия*/ _Marked = @ПометкаУдаления ,_Number = @Номер ,_Fld24367RRef = @Физлицо ,_Fld24368RRef = @Организация ,_Fld24369RRef = @ИсполнительныйЛист ,_Fld24370RRef = @Действие ,_Fld24371 = @ДатаИзменения ,_Fld24372 = @ДатаОкончания ,_Fld24373RRef = @СпособРасчетаУдержания ,_Fld24374 = @Размер ,_Fld24375 = @Предел ,_Fld24376RRef = @ПрожиточныйМинимум ,_Fld24377 = @ПроцентПочтовогоСбора ,_Fld24378RRef = @Тариф ,_Fld24379RRef = @СпособПеречисленияПоИсполнительномуЛисту ,_Fld24380RRef = @ТарифБанкаНаДенежныеПереводы ,_Fld24381 = @ПочтовыйСборРассчитыватьПроцентом ,_Fld24382RRef = @Ответственный ,_Fld24383 = @Комментарий 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("Комментарий", Комментарий); Команда.ExecuteNonQuery(); } } }