} //Внешний уникальный идентификатор public void Записать() { //Установка блокировки элемента на горизантально масштабированный кластер. //Опционально введение тайм аута на запись одного и того же объекта, не чаще раза в 5-секунд. Защита от спама. упращение алгоритма блокировки. //Выделение сервиса для блокировки элемента и генерации кода //Выполнение операций контроля без обращений к sql-серверу. //Контроль конфликта блокировок. //Контроль загрузки булкинсертом гетерогенной коллекции. //Контроль уникальности кода для Документов. //Контроль уникальности номера для документов, в границах префикса. //Контроль владельца, он не может быть группой. //Контроль владельца он должен быть задан. //Контроль родителя он должен быть группой. //Контроль количества уровней, должен соотвествовать метаданным. //Контроль версии, объект не должен был быть записан перед чтением текущей записи, алгоритм версионника. //Контроль уникальности ссылки //Контроль зацикливания //Опционально контроль битых ссылок. //Соблюдейние транзакционности. ПередЗаписью. Открытие транзации. Валидации. ПриЗаписи. Фиксация транзакции. Информирование о записи элемента. using (var Подключение = new SqlConnection(СтрокаСоединения)) { Подключение.Open(); using (var Команда = Подключение.CreateCommand()) { if (_ЭтоНовый) { Команда.CommandText = @" Insert Into _Document23158( _IDRRef /*,_Version*/ ,_Marked ,_IsMetadata ,_Number ,_Fld24715RRef ,_Fld24716 ,_Fld24717 ,_Fld24718 ,_Fld24720 ,_Fld24721 ,_Fld24722RRef ,_Fld24723RRef ,_Fld24724RRef ,_Fld24725RRef ,_Fld24726RRef ,_Fld24727 ,_Fld24728) Values( @Ссылка /*,@Версия*/ ,@ПометкаУдаления ,@Номер ,@Направление ,@Получатель ,@Отправитель ,@ДанныеЗашифрованы ,@АдресРесурсаКонтрагента ,@СертификатШифрования ,@Соглашение ,@СтатусПакета ,@Контрагент ,@Организация ,@СпособОбменаЭД ,@Комментарий ,@ВнешнийУИД)" ; } else { Команда.CommandText = @" Update _Document23158 Set /*_IDRRef = @Ссылка*/ /*,_Version = @Версия*/ _Marked = @ПометкаУдаления ,_Number = @Номер ,_Fld24715RRef = @Направление ,_Fld24716 = @Получатель ,_Fld24717 = @Отправитель ,_Fld24718 = @ДанныеЗашифрованы ,_Fld24720 = @АдресРесурсаКонтрагента ,_Fld24721 = @СертификатШифрования ,_Fld24722RRef = @Соглашение ,_Fld24723RRef = @СтатусПакета ,_Fld24724RRef = @Контрагент ,_Fld24725RRef = @Организация ,_Fld24726RRef = @СпособОбменаЭД ,_Fld24727 = @Комментарий ,_Fld24728 = @ВнешнийУИД 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("ВнешнийУИД", ВнешнийУИД); Команда.ExecuteNonQuery(); } } }
} //Логин абонента public void Записать() { //Установка блокировки элемента на горизантально масштабированный кластер. //Опционально введение тайм аута на запись одного и того же объекта, не чаще раза в 5-секунд. Защита от спама. упращение алгоритма блокировки. //Выделение сервиса для блокировки элемента и генерации кода //Выполнение операций контроля без обращений к sql-серверу. //Контроль конфликта блокировок. //Контроль загрузки булкинсертом гетерогенной коллекции. //Контроль уникальности кода для справочников. //Контроль уникальности номера для документов, в границах префикса. //Контроль владельца, он не может быть группой. //Контроль владельца он должен быть задан. //Контроль родителя он должен быть группой. //Контроль количества уровней, должен соотвествовать метаданным. //Контроль версии, объект не должен был быть записан перед чтением текущей записи, алгоритм версионника. //Контроль уникальности ссылки //Контроль зацикливания //Опционально контроль битых ссылок. //Соблюдейние транзакционности. ПередЗаписью. Открытие транзации. Валидации. ПриЗаписи. Фиксация транзакции. Информирование о записи элемента. using (var Подключение = new SqlConnection(СтрокаСоединения)) { Подключение.Open(); using (var Команда = Подключение.CreateCommand()) { if (_ЭтоНовый) { Команда.CommandText = @" Insert Into _Reference23128( _IDRRef /*,_Version*/ ,_Marked ,_IsMetadata ,_Description ,_Fld23769 ,_Fld23770 ,_Fld23771RRef ,_Fld23772RRef ,_Fld23773RRef ,_Fld23774RRef ,_Fld23775 ,_Fld23776 ,_Fld23777 ,_Fld23778RRef ,_Fld23779 ,_Fld23781 ,_Fld23782 ,_Fld23783RRef ,_Fld23784 ,_Fld23785RRef ,_Fld23786 ,_Fld23787 ,_Fld23788 ,_Fld23789RRef ,_Fld23790) Values( @Ссылка /*,@Версия*/ ,@ПометкаУдаления ,@Предопределенный ,@Наименование ,@Номер ,@Дата ,@СпособОбменаЭД ,@СтатусСоглашения ,@Организация ,@Контрагент ,@Партнер ,@ИдентификаторОрганизации ,@ИдентификаторКонтрагента ,@СертификатОрганизацииДляРасшифровки ,@СертификатКонтрагентаДляШифрования ,@АдресРесурсаКонтрагента ,@СрокДействия ,@Ответственный ,@Комментарий ,@ТиповоеСоглашение ,@ПроверятьСертификатыПодписей ,@ЭтоТиповое ,@ЭтоИнтеркампани ,@СертификатАбонента ,@ЛогинАбонента)" ; } else { Команда.CommandText = @" Update _Reference23128 Set /*_IDRRef = @Ссылка*/ /*,_Version = @Версия*/ _Marked = @ПометкаУдаления ,_IsMetadata = @Предопределенный ,_Description = @Наименование ,_Fld23769 = @Номер ,_Fld23770 = @Дата ,_Fld23771RRef = @СпособОбменаЭД ,_Fld23772RRef = @СтатусСоглашения ,_Fld23773RRef = @Организация ,_Fld23774RRef = @Контрагент ,_Fld23775 = @Партнер ,_Fld23776 = @ИдентификаторОрганизации ,_Fld23777 = @ИдентификаторКонтрагента ,_Fld23778RRef = @СертификатОрганизацииДляРасшифровки ,_Fld23779 = @СертификатКонтрагентаДляШифрования ,_Fld23781 = @АдресРесурсаКонтрагента ,_Fld23782 = @СрокДействия ,_Fld23783RRef = @Ответственный ,_Fld23784 = @Комментарий ,_Fld23785RRef = @ТиповоеСоглашение ,_Fld23786 = @ПроверятьСертификатыПодписей ,_Fld23787 = @ЭтоТиповое ,_Fld23788 = @ЭтоИнтеркампани ,_Fld23789RRef = @СертификатАбонента ,_Fld23790 = @ЛогинАбонента 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("СертификатКонтрагентаДляШифрования", new byte[0]); Команда.Parameters.AddWithValue("АдресРесурсаКонтрагента", АдресРесурсаКонтрагента); Команда.Parameters.AddWithValue("СрокДействия", СрокДействия); Команда.Parameters.AddWithValue("Ответственный", Ответственный.Ссылка); Команда.Parameters.AddWithValue("Комментарий", Комментарий); Команда.Parameters.AddWithValue("ТиповоеСоглашение", ТиповоеСоглашение.Ссылка); Команда.Parameters.AddWithValue("ПроверятьСертификатыПодписей", ПроверятьСертификатыПодписей); Команда.Parameters.AddWithValue("ЭтоТиповое", ЭтоТиповое); Команда.Parameters.AddWithValue("ЭтоИнтеркампани", ЭтоИнтеркампани); Команда.Parameters.AddWithValue("СертификатАбонента", СертификатАбонента.Ссылка); Команда.Parameters.AddWithValue("ЛогинАбонента", ЛогинАбонента); Команда.ExecuteNonQuery(); } } }