} //Имеет изобретения public void Записать() { //Установка блокировки элемента на горизантально масштабированный кластер. //Опционально введение тайм аута на запись одного и того же объекта, не чаще раза в 5-секунд. Защита от спама. упращение алгоритма блокировки. //Выделение сервиса для блокировки элемента и генерации кода //Выполнение операций контроля без обращений к sql-серверу. //Контроль конфликта блокировок. //Контроль загрузки булкинсертом гетерогенной коллекции. //Контроль уникальности кода для справочников. //Контроль уникальности номера для документов, в границах префикса. //Контроль владельца, он не может быть группой. //Контроль владельца он должен быть задан. //Контроль родителя он должен быть группой. //Контроль количества уровней, должен соотвествовать метаданным. //Контроль версии, объект не должен был быть записан перед чтением текущей записи, алгоритм версионника. //Контроль уникальности ссылки //Контроль зацикливания //Опционально контроль битых ссылок. //Соблюдейние транзакционности. ПередЗаписью. Открытие транзации. Валидации. ПриЗаписи. Фиксация транзакции. Информирование о записи элемента. using (var Подключение = new SqlConnection(СтрокаСоединения)) { Подключение.Open(); using (var Команда = Подключение.CreateCommand()) { if (_ЭтоНовый) { Команда.CommandText = @" Insert Into _Reference190( _IDRRef /*,_Version*/ ,_Marked ,_IsMetadata ,_ParentIDRRef ,_Folder ,_Code ,_Description ,_Fld2197 ,_Fld2198 ,_Fld2199 ,_Fld2200 ,_Fld2201 ,_Fld2202RRef ,_Fld2203 ,_Fld2204RRef ,_Fld2205 ,_Fld21297RRef ,_Fld26650RRef ,_Fld26651 ,_Fld26652) Values( @Ссылка /*,@Версия*/ ,@ПометкаУдаления ,@Предопределенный ,@Родитель ,@ЭтоГруппа ,@Код ,@Наименование ,@ДатаРождения ,@ИНН ,@КодИМНС ,@Комментарий ,@СтраховойНомерПФР ,@Пол ,@МестоРождения ,@ОсновноеИзображение ,@МестоРожденияКодПоОКАТО ,@ГруппаДоступаФизическогоЛица ,@ЛьготаПриНачисленииПособий ,@ИмеетНаучныеТруды ,@ИмеетИзобретения)" ; } else { Команда.CommandText = @" Update _Reference190 Set /*_IDRRef = @Ссылка*/ /*,_Version = @Версия*/ _Marked = @ПометкаУдаления ,_IsMetadata = @Предопределенный ,_ParentIDRRef = @Родитель ,_Folder = @ЭтоГруппа ,_Code = @Код ,_Description = @Наименование ,_Fld2197 = @ДатаРождения ,_Fld2198 = @ИНН ,_Fld2199 = @КодИМНС ,_Fld2200 = @Комментарий ,_Fld2201 = @СтраховойНомерПФР ,_Fld2202RRef = @Пол ,_Fld2203 = @МестоРождения ,_Fld2204RRef = @ОсновноеИзображение ,_Fld2205 = @МестоРожденияКодПоОКАТО ,_Fld21297RRef = @ГруппаДоступаФизическогоЛица ,_Fld26650RRef = @ЛьготаПриНачисленииПособий ,_Fld26651 = @ИмеетНаучныеТруды ,_Fld26652 = @ИмеетИзобретения Where _IDRRef = @Ссылка" ; } Команда.Parameters.AddWithValue("Ссылка", Ссылка.ToByteArray()); /*Команда.Parameters.AddWithValue("Версия", Версия);*/ Команда.Parameters.AddWithValue("ПометкаУдаления", ПометкаУдаления); Команда.Parameters.AddWithValue("Предопределенный", Предопределенный); Команда.Parameters.AddWithValue("Родитель", одитель); Команда.Parameters.AddWithValue("ЭтоГруппа", ЭтоГруппа?new byte[] { 0 }:new byte[] { 1 }); Команда.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(); } } }
public void Записать() { //Установка блокировки элемента на горизантально масштабированный кластер. //Опционально введение тайм аута на запись одного и того же объекта, не чаще раза в 5-секунд. Защита от спама. упращение алгоритма блокировки. //Выделение сервиса для блокировки элемента и генерации кода //Выполнение операций контроля без обращений к sql-серверу. //Контроль конфликта блокировок. //Контроль загрузки булкинсертом гетерогенной коллекции. //Контроль уникальности кода для справочников. //Контроль уникальности номера для документов, в границах префикса. //Контроль владельца, он не может быть группой. //Контроль владельца он должен быть задан. //Контроль родителя он должен быть группой. //Контроль количества уровней, должен соотвествовать метаданным. //Контроль версии, объект не должен был быть записан перед чтением текущей записи, алгоритм версионника. //Контроль уникальности ссылки //Контроль зацикливания //Опционально контроль битых ссылок. //Соблюдейние транзакционности. ПередЗаписью. Открытие транзации. Валидации. ПриЗаписи. Фиксация транзакции. Информирование о записи элемента. using (var Подключение = new SqlConnection(СтрокаСоединения)) { Подключение.Open(); using (var Команда = Подключение.CreateCommand()) { if (_ЭтоНовый) { Команда.CommandText = @" Insert Into _Reference23103( _IDRRef /*,_Version*/ ,_Marked ,_IsMetadata ,_Code ,_Description ,_Fld23525RRef ,_Fld23526RRef ,_Fld23527RRef ,_Fld23528 ,_Fld23529 ,_Fld23530RRef ,_Fld23531 ,_Fld23532 ,_Fld23533RRef ,_Fld23534 ,_Fld23535 ,_Fld23536 ,_Fld23537 ,_Fld23538RRef ,_Fld23539 ,_Fld23540 ,_Fld23541 ,_Fld23542 ,_Fld23543 ,_Fld23544) Values( @Ссылка /*,@Версия*/ ,@ПометкаУдаления ,@Предопределенный ,@Код ,@Наименование ,@Физлицо ,@Организация ,@ВидСтрахования ,@ДатаВыдачиПолиса ,@ДатаОкончанияПолиса ,@ПрограммаСтрахования ,@СтрахованиеРодственника ,@Родственник ,@Пол ,@ДатаРождения ,@УдостоверениеЛичности ,@АдресФактический ,@ТелефонДомашний ,@ДокументВид ,@ДокументСерия ,@ДокументНомер ,@ДокументДатаВыдачи ,@ДокументКемВыдан ,@ДокументКодПодразделения ,@Комментарий)" ; } else { Команда.CommandText = @" Update _Reference23103 Set /*_IDRRef = @Ссылка*/ /*,_Version = @Версия*/ _Marked = @ПометкаУдаления ,_IsMetadata = @Предопределенный ,_Code = @Код ,_Description = @Наименование ,_Fld23525RRef = @Физлицо ,_Fld23526RRef = @Организация ,_Fld23527RRef = @ВидСтрахования ,_Fld23528 = @ДатаВыдачиПолиса ,_Fld23529 = @ДатаОкончанияПолиса ,_Fld23530RRef = @ПрограммаСтрахования ,_Fld23531 = @СтрахованиеРодственника ,_Fld23532 = @Родственник ,_Fld23533RRef = @Пол ,_Fld23534 = @ДатаРождения ,_Fld23535 = @УдостоверениеЛичности ,_Fld23536 = @АдресФактический ,_Fld23537 = @ТелефонДомашний ,_Fld23538RRef = @ДокументВид ,_Fld23539 = @ДокументСерия ,_Fld23540 = @ДокументНомер ,_Fld23541 = @ДокументДатаВыдачи ,_Fld23542 = @ДокументКемВыдан ,_Fld23543 = @ДокументКодПодразделения ,_Fld23544 = @Комментарий 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("Комментарий", Комментарий); Команда.ExecuteNonQuery(); } } }