} //Файл public void Записать() { //Установка блокировки элемента на горизантально масштабированный кластер. //Опционально введение тайм аута на запись одного и того же объекта, не чаще раза в 5-секунд. Защита от спама. упращение алгоритма блокировки. //Выделение сервиса для блокировки элемента и генерации кода //Выполнение операций контроля без обращений к sql-серверу. //Контроль конфликта блокировок. //Контроль загрузки булкинсертом гетерогенной коллекции. //Контроль уникальности кода для справочников. //Контроль уникальности номера для документов, в границах префикса. //Контроль владельца, он не может быть группой. //Контроль владельца он должен быть задан. //Контроль родителя он должен быть группой. //Контроль количества уровней, должен соотвествовать метаданным. //Контроль версии, объект не должен был быть записан перед чтением текущей записи, алгоритм версионника. //Контроль уникальности ссылки //Контроль зацикливания //Опционально контроль битых ссылок. //Соблюдейние транзакционности. ПередЗаписью. Открытие транзации. Валидации. ПриЗаписи. Фиксация транзакции. Информирование о записи элемента. using (var Подключение = new SqlConnection(СтрокаСоединения)) { Подключение.Open(); using (var Команда = Подключение.CreateCommand()) { if (_ЭтоНовый) { Команда.CommandText = @" Insert Into _Reference23089( _IDRRef /*,_Version*/ ,_Marked ,_IsMetadata ,_Code ,_Description ,_Fld23340RRef ,_Fld23341 ,_Fld23342 ,_Fld23343 ,_Fld23344 ,_Fld23345 ,_Fld23346 ,_Fld23347 ,_Fld23348 ,_Fld23349 ,_Fld23350 ,_Fld23351 ,_Fld23352RRef ,_Fld23353RRef ,_Fld23354 ,_Fld23355RRef ,_Fld23356RRef ,_Fld23357) Values( @Ссылка /*,@Версия*/ ,@ПометкаУдаления ,@Предопределенный ,@Код ,@Наименование ,@Автор ,@ДатаМодификацииУниверсальная ,@ДатаСоздания ,@Зашифрован ,@ИндексКартинки ,@Комментарий ,@НомерВерсии ,@ПодписанЭЦП ,@ПолноеНаименование ,@ПутьКФайлу ,@Размер ,@Расширение ,@РодительскаяВерсия ,@СтатусИзвлеченияТекста ,@ТекстХранилище ,@ТипХраненияФайла ,@Том ,@ФайлХранилище)" ; } else { Команда.CommandText = @" Update _Reference23089 Set /*_IDRRef = @Ссылка*/ /*,_Version = @Версия*/ _Marked = @ПометкаУдаления ,_IsMetadata = @Предопределенный ,_Code = @Код ,_Description = @Наименование ,_Fld23340RRef = @Автор ,_Fld23341 = @ДатаМодификацииУниверсальная ,_Fld23342 = @ДатаСоздания ,_Fld23343 = @Зашифрован ,_Fld23344 = @ИндексКартинки ,_Fld23345 = @Комментарий ,_Fld23346 = @НомерВерсии ,_Fld23347 = @ПодписанЭЦП ,_Fld23348 = @ПолноеНаименование ,_Fld23349 = @ПутьКФайлу ,_Fld23350 = @Размер ,_Fld23351 = @Расширение ,_Fld23352RRef = @РодительскаяВерсия ,_Fld23353RRef = @СтатусИзвлеченияТекста ,_Fld23354 = @ТекстХранилище ,_Fld23355RRef = @ТипХраненияФайла ,_Fld23356RRef = @Том ,_Fld23357 = @ФайлХранилище 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("ТекстХранилище", new byte[0]); Команда.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 _Reference23137( _IDRRef /*,_Version*/ ,_Marked ,_IsMetadata ,_Description ,_Fld23920RRef ,_Fld23921RRef ,_Fld23923 ,_Fld23924 ,_Fld23925 ,_Fld23926 ,_Fld23927 ,_Fld23928 ,_Fld23929 ,_Fld23930RRef ,_Fld23931 ,_Fld23932RRef ,_Fld23933RRef ,_Fld23934 ,_Fld23935 ,_Fld23936 ,_Fld23937 ,_Fld23938RRef ,_Fld23939RRef ,_Fld23940 ,_Fld23941 ,_Fld23942 ,_Fld23943 ,_Fld23944 ,_Fld23945 ,_Fld23946 ,_Fld23947RRef ,_Fld23948RRef ,_Fld23949RRef ,_Fld23950RRef ,_Fld23951 ,_Fld23952RRef ,_Fld23953RRef ,_Fld23954RRef ,_Fld23955 ,_Fld23956 ,_Fld23957RRef) Values( @Ссылка /*,@Версия*/ ,@ПометкаУдаления ,@Предопределенный ,@Наименование ,@Автор ,@ВидЭД ,@ДатаДокументаОтправителя ,@ДатаИзмененияСтатусаЭД ,@ДатаМодификацииУниверсальная ,@ДатаСоздания ,@ДатаФормированияЭДОтправителем ,@Загружен ,@Зашифрован ,@Изменил ,@ИндексКартинки ,@Контрагент ,@НаправлениеЭД ,@НомерВерсииЭД ,@НомерДокументаОтправителя ,@НомерЭД ,@Описание ,@Организация ,@Ответственный ,@ОтправительЭД ,@ПодписанЭЦП ,@ПолучательЭД ,@ПричинаОтклонения ,@ПутьКФайлу ,@Размер ,@Расширение ,@Редактирует ,@СоглашениеЭД ,@СтатусИзвлеченияТекста ,@СтатусЭД ,@ТекстХранилище ,@ТипХраненияФайла ,@ТипЭлементаВерсииЭД ,@Том ,@УникальныйИД ,@ФайлХранилище ,@ЭлектронныйДокументВладелец)" ; } else { Команда.CommandText = @" Update _Reference23137 Set /*_IDRRef = @Ссылка*/ /*,_Version = @Версия*/ _Marked = @ПометкаУдаления ,_IsMetadata = @Предопределенный ,_Description = @Наименование ,_Fld23920RRef = @Автор ,_Fld23921RRef = @ВидЭД ,_Fld23923 = @ДатаДокументаОтправителя ,_Fld23924 = @ДатаИзмененияСтатусаЭД ,_Fld23925 = @ДатаМодификацииУниверсальная ,_Fld23926 = @ДатаСоздания ,_Fld23927 = @ДатаФормированияЭДОтправителем ,_Fld23928 = @Загружен ,_Fld23929 = @Зашифрован ,_Fld23930RRef = @Изменил ,_Fld23931 = @ИндексКартинки ,_Fld23932RRef = @Контрагент ,_Fld23933RRef = @НаправлениеЭД ,_Fld23934 = @НомерВерсииЭД ,_Fld23935 = @НомерДокументаОтправителя ,_Fld23936 = @НомерЭД ,_Fld23937 = @Описание ,_Fld23938RRef = @Организация ,_Fld23939RRef = @Ответственный ,_Fld23940 = @ОтправительЭД ,_Fld23941 = @ПодписанЭЦП ,_Fld23942 = @ПолучательЭД ,_Fld23943 = @ПричинаОтклонения ,_Fld23944 = @ПутьКФайлу ,_Fld23945 = @Размер ,_Fld23946 = @Расширение ,_Fld23947RRef = @Редактирует ,_Fld23948RRef = @СоглашениеЭД ,_Fld23949RRef = @СтатусИзвлеченияТекста ,_Fld23950RRef = @СтатусЭД ,_Fld23951 = @ТекстХранилище ,_Fld23952RRef = @ТипХраненияФайла ,_Fld23953RRef = @ТипЭлементаВерсииЭД ,_Fld23954RRef = @Том ,_Fld23955 = @УникальныйИД ,_Fld23956 = @ФайлХранилище ,_Fld23957RRef = @ЭлектронныйДокументВладелец 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("НомерЭД", НомерЭД); Команда.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("ФайлХранилище", new byte[0]); Команда.Parameters.AddWithValue("ЭлектронныйДокументВладелец", ЭлектронныйДокументВладелец.Ссылка); Команда.ExecuteNonQuery(); } } }