public void Записать()
{
//Установка блокировки элемента на горизантально масштабированный кластер.
//Опционально введение тайм аута на запись одного и того же объекта, не чаще раза в 5-секунд. Защита от спама. упращение алгоритма блокировки.
//Выделение сервиса для блокировки элемента и генерации кода
//Выполнение операций контроля без обращений к sql-серверу.
//Контроль конфликта блокировок.
//Контроль загрузки булкинсертом гетерогенной коллекции.
//Контроль уникальности кода для справочников.
//Контроль уникальности номера для документов, в границах префикса.
//Контроль владельца, он не может быть группой.
//Контроль владельца он должен быть задан.
//Контроль родителя он должен быть группой.
//Контроль количества уровней, должен соотвествовать метаданным.
//Контроль версии, объект не должен был быть записан перед чтением текущей записи, алгоритм версионника.
//Контроль уникальности ссылки
//Контроль зацикливания
//Опционально контроль битых ссылок.
//Соблюдейние транзакционности. ПередЗаписью. Открытие транзации. Валидации. ПриЗаписи. Фиксация транзакции. Информирование о записи элемента.
using (var Подключение = new SqlConnection(СтрокаСоединения))
{
Подключение.Open();
using (var Команда = Подключение.CreateCommand())
{
if(_ЭтоНовый)
{
Команда.CommandText = @"
Insert Into _Reference23095(
_IDRRef
/*,_Version*/
,_Marked
,_IsMetadata
,_OwnerIDRRef
,_Code
,_Description
,_Fld23393
,_Fld23394
,_Fld23395
,_Fld23396
,_Fld23397
,_Fld23398
,_Fld23399
,_Fld23400
,_Fld23401
,_Fld23402
,_Fld23403
,_Fld23404RRef
,_Fld23405
,_Fld23406
,_Fld23407
,_Fld23408
,_Fld23409
,_Fld23410
,_Fld23411
,_Fld23412RRef
,_Fld23413
,_Fld23414
,_Fld23415
,_Fld23416
,_Fld23417
,_Fld23418
,_Fld23419
,_Fld23420
,_Fld23421
,_Fld23422
,_Fld23423
,_Fld23424)
Values(
@Ссылка
/*,@Версия*/
,@ПометкаУдаления
,@Предопределенный
,@Владелец
,@Код
,@Наименование
,@НомерДовер
,@ДатаВыдачи
,@ДатаОкончания
,@ПризнакДоверителя
,@ДоверительЮЛ_НаимОрг
,@ДоверительЮЛ_ИНН
,@ДоверительЮЛ_КПП
,@ДоверительЮЛ_ОГРН
,@ДоверительРук_ИНН
,@ДоверительФЛ_ИНН
,@ДоверительФЛ_ОГРН
,@ДоверительФЛ_Гражданство
,@ДоверительФЛ_ДатаРождения
,@ПредставительЮЛ_НаимОрг
,@ПредставительЮЛ_ИНН
,@ПредставительЮЛ_КПП
,@ПредставительЮЛ_ОГРН
,@ПредставительФЛ_ИНН
,@ПредставительФЛ_ОГРН
,@ПредставительФЛ_Гражданство
,@ПредставительФЛ_ДатаРождения
,@НотариусЮЛ_НаимОрг
,@НотариусЮЛ_ИНН
,@НотариусЮЛ_КПП
,@НотариусЮЛ_ОГРН
,@НотариусФЛ_ИНН
,@ДоверительЯвляетсяЮЛ
,@ПредставительЯвляетсяЮЛ
,@НотариусЯвляетсяЮЛ
,@ЗаверенаНотариально
,@ДоверительИмеетУЛ
,@ПредставительЯвляетсяСотрудником)";
}
else
{
Команда.CommandText = @"
Update _Reference23095
Set
/*_IDRRef = @Ссылка*/
/*,_Version = @Версия*/
_Marked = @ПометкаУдаления
,_IsMetadata = @Предопределенный
,_OwnerIDRRef = @Владелец
,_Code = @Код
,_Description = @Наименование
,_Fld23393 = @НомерДовер
,_Fld23394 = @ДатаВыдачи
,_Fld23395 = @ДатаОкончания
,_Fld23396 = @ПризнакДоверителя
,_Fld23397 = @ДоверительЮЛ_НаимОрг
,_Fld23398 = @ДоверительЮЛ_ИНН
,_Fld23399 = @ДоверительЮЛ_КПП
,_Fld23400 = @ДоверительЮЛ_ОГРН
,_Fld23401 = @ДоверительРук_ИНН
,_Fld23402 = @ДоверительФЛ_ИНН
,_Fld23403 = @ДоверительФЛ_ОГРН
,_Fld23404RRef = @ДоверительФЛ_Гражданство
,_Fld23405 = @ДоверительФЛ_ДатаРождения
,_Fld23406 = @ПредставительЮЛ_НаимОрг
,_Fld23407 = @ПредставительЮЛ_ИНН
,_Fld23408 = @ПредставительЮЛ_КПП
,_Fld23409 = @ПредставительЮЛ_ОГРН
,_Fld23410 = @ПредставительФЛ_ИНН
,_Fld23411 = @ПредставительФЛ_ОГРН
,_Fld23412RRef = @ПредставительФЛ_Гражданство
,_Fld23413 = @ПредставительФЛ_ДатаРождения
,_Fld23414 = @НотариусЮЛ_НаимОрг
,_Fld23415 = @НотариусЮЛ_ИНН
,_Fld23416 = @НотариусЮЛ_КПП
,_Fld23417 = @НотариусЮЛ_ОГРН
,_Fld23418 = @НотариусФЛ_ИНН
,_Fld23419 = @ДоверительЯвляетсяЮЛ
,_Fld23420 = @ПредставительЯвляетсяЮЛ
,_Fld23421 = @НотариусЯвляетсяЮЛ
,_Fld23422 = @ЗаверенаНотариально
,_Fld23423 = @ДоверительИмеетУЛ
,_Fld23424 = @ПредставительЯвляетсяСотрудником
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("НотариусЯвляетсяЮЛ", НотариусЯвляетсяЮЛ);
Команда.Parameters.AddWithValue("ЗаверенаНотариально", ЗаверенаНотариально);
Команда.Parameters.AddWithValue("ДоверительИмеетУЛ", ДоверительИмеетУЛ);
Команда.Parameters.AddWithValue("ПредставительЯвляетсяСотрудником", ПредставительЯвляетсяСотрудником);
Команда.ExecuteNonQuery();
}
}
}