} //Формат запроса public void Записать() { //Установка блокировки элемента на горизантально масштабированный кластер. //Опционально введение тайм аута на запись одного и того же объекта, не чаще раза в 5-секунд. Защита от спама. упращение алгоритма блокировки. //Выделение сервиса для блокировки элемента и генерации кода //Выполнение операций контроля без обращений к sql-серверу. //Контроль конфликта блокировок. //Контроль загрузки булкинсертом гетерогенной коллекции. //Контроль уникальности кода для Документов. //Контроль уникальности номера для документов, в границах префикса. //Контроль владельца, он не может быть группой. //Контроль владельца он должен быть задан. //Контроль родителя он должен быть группой. //Контроль количества уровней, должен соотвествовать метаданным. //Контроль версии, объект не должен был быть записан перед чтением текущей записи, алгоритм версионника. //Контроль уникальности ссылки //Контроль зацикливания //Опционально контроль битых ссылок. //Соблюдейние транзакционности. ПередЗаписью. Открытие транзации. Валидации. ПриЗаписи. Фиксация транзакции. Информирование о записи элемента. using (var Подключение = new SqlConnection(СтрокаСоединения)) { Подключение.Open(); using (var Команда = Подключение.CreateCommand()) { if (_ЭтоНовый) { Команда.CommandText = @" Insert Into _Document23145( _IDRRef /*,_Version*/ ,_Marked ,_IsMetadata ,_Number ,_Fld24205RRef ,_Fld24206RRef ,_Fld24207 ,_Fld24208 ,_Fld24209RRef ,_Fld24210RRef ,_Fld24211 ,_Fld24212 ,_Fld24213RRef) Values( @Ссылка /*,@Версия*/ ,@ПометкаУдаления ,@Номер ,@Организация ,@Получатель ,@ДатаНачалаПериода ,@ДатаОкончанияПериода ,@ВидУслуги ,@ФорматОтвета ,@АдресПредставленияСправки ,@ДополнительныйПараметр ,@ФорматЗапроса)" ; } else { Команда.CommandText = @" Update _Document23145 Set /*_IDRRef = @Ссылка*/ /*,_Version = @Версия*/ _Marked = @ПометкаУдаления ,_Number = @Номер ,_Fld24205RRef = @Организация ,_Fld24206RRef = @Получатель ,_Fld24207 = @ДатаНачалаПериода ,_Fld24208 = @ДатаОкончанияПериода ,_Fld24209RRef = @ВидУслуги ,_Fld24210RRef = @ФорматОтвета ,_Fld24211 = @АдресПредставленияСправки ,_Fld24212 = @ДополнительныйПараметр ,_Fld24213RRef = @ФорматЗапроса 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("ФорматЗапроса", ФорматЗапроса.Ключ()); Команда.ExecuteNonQuery(); } } }
} //Формат документооборота public void Записать() { //Установка блокировки элемента на горизантально масштабированный кластер. //Опционально введение тайм аута на запись одного и того же объекта, не чаще раза в 5-секунд. Защита от спама. упращение алгоритма блокировки. //Выделение сервиса для блокировки элемента и генерации кода //Выполнение операций контроля без обращений к sql-серверу. //Контроль конфликта блокировок. //Контроль загрузки булкинсертом гетерогенной коллекции. //Контроль уникальности кода для справочников. //Контроль уникальности номера для документов, в границах префикса. //Контроль владельца, он не может быть группой. //Контроль владельца он должен быть задан. //Контроль родителя он должен быть группой. //Контроль количества уровней, должен соотвествовать метаданным. //Контроль версии, объект не должен был быть записан перед чтением текущей записи, алгоритм версионника. //Контроль уникальности ссылки //Контроль зацикливания //Опционально контроль битых ссылок. //Соблюдейние транзакционности. ПередЗаписью. Открытие транзации. Валидации. ПриЗаписи. Фиксация транзакции. Информирование о записи элемента. using (var Подключение = new SqlConnection(СтрокаСоединения)) { Подключение.Open(); using (var Команда = Подключение.CreateCommand()) { if (_ЭтоНовый) { Команда.CommandText = @" Insert Into _Reference23136( _IDRRef /*,_Version*/ ,_Marked ,_IsMetadata ,_Code ,_Description ,_Fld23880RRef ,_Fld23881RRef ,_Fld23882 ,_Fld23884RRef ,_Fld23886 ,_Fld23887 ,_Fld23888 ,_Fld23890 ,_Fld23891 ,_Fld23892 ,_Fld23893RRef ,_Fld23894RRef ,_Fld23895 ,_Fld23896RRef ,_Fld23897RRef) Values( @Ссылка /*,@Версия*/ ,@ПометкаУдаления ,@Предопределенный ,@Код ,@Наименование ,@УчетнаяЗапись ,@Тип ,@Идентификатор ,@Организация ,@ДатаСоздания ,@ДатаЗакрытия ,@ДатаПоследнегоСообщения ,@ДатаНачалаПериода ,@ДатаОкончанияПериода ,@ВидДокумента ,@ВидУслуги ,@ФорматОтвета ,@Период ,@Вид ,@ФорматДокументооборота)" ; } else { Команда.CommandText = @" Update _Reference23136 Set /*_IDRRef = @Ссылка*/ /*,_Version = @Версия*/ _Marked = @ПометкаУдаления ,_IsMetadata = @Предопределенный ,_Code = @Код ,_Description = @Наименование ,_Fld23880RRef = @УчетнаяЗапись ,_Fld23881RRef = @Тип ,_Fld23882 = @Идентификатор ,_Fld23884RRef = @Организация ,_Fld23886 = @ДатаСоздания ,_Fld23887 = @ДатаЗакрытия ,_Fld23888 = @ДатаПоследнегоСообщения ,_Fld23890 = @ДатаНачалаПериода ,_Fld23891 = @ДатаОкончанияПериода ,_Fld23892 = @ВидДокумента ,_Fld23893RRef = @ВидУслуги ,_Fld23894RRef = @ФорматОтвета ,_Fld23895 = @Период ,_Fld23896RRef = @Вид ,_Fld23897RRef = @ФорматДокументооборота 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(); } } }