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();
}
}
}