public static Guid Ссылка(this Важность Значение) { switch (Значение) { case Важность.Высокая: return(Высокая); case Важность.Средняя: return(Средняя); case Важность.Низкая: return(Низкая); } return(Guid.Empty); }
public static Важность Получить(this Важность Значение, Guid Ссылка) { if (Ссылка == Высокая) { return(Важность.Высокая); } else if (Ссылка == Средняя) { return(Важность.Средняя); } else if (Ссылка == Низкая) { return(Важность.Низкая); } return(Важность.ПустаяСсылка); }
} //Заявка кандидата public void Записать() { //Установка блокировки элемента на горизантально масштабированный кластер. //Опционально введение тайм аута на запись одного и того же объекта, не чаще раза в 5-секунд. Защита от спама. упращение алгоритма блокировки. //Выделение сервиса для блокировки элемента и генерации кода //Выполнение операций контроля без обращений к sql-серверу. //Контроль конфликта блокировок. //Контроль загрузки булкинсертом гетерогенной коллекции. //Контроль уникальности кода для Документов. //Контроль уникальности номера для документов, в границах префикса. //Контроль владельца, он не может быть группой. //Контроль владельца он должен быть задан. //Контроль родителя он должен быть группой. //Контроль количества уровней, должен соотвествовать метаданным. //Контроль версии, объект не должен был быть записан перед чтением текущей записи, алгоритм версионника. //Контроль уникальности ссылки //Контроль зацикливания //Опционально контроль битых ссылок. //Соблюдейние транзакционности. ПередЗаписью. Открытие транзации. Валидации. ПриЗаписи. Фиксация транзакции. Информирование о записи элемента. using (var Подключение = new SqlConnection(СтрокаСоединения)) { Подключение.Open(); using (var Команда = Подключение.CreateCommand()) { if (_ЭтоНовый) { Команда.CommandText = @" Insert Into _Document452( _IDRRef /*,_Version*/ ,_Marked ,_IsMetadata ,_Number ,_Fld11506 ,_Fld11507RRef ,_Fld11508RRef ,_Fld11509RRef ,_Fld11510 ,_Fld11511RRef ,_Fld11512 ,_Fld11515 ,_Fld11516 ,_Fld11517 ,_Fld11518 ,_Fld11520RRef ,_Fld11521RRef ,_Fld11522RRef ,_Fld11523 ,_Fld11524RRef ,_Fld11525RRef ,_Fld11526RRef ,_Fld11527RRef ,_Fld11528 ,_Fld11529RRef ,_Fld11530 ,_Fld11531 ,_Fld22251RRef) Values( @Ссылка /*,@Версия*/ ,@ПометкаУдаления ,@Номер ,@АдресЭлектроннойПочты ,@Важность ,@ВидОбъекта ,@ВидСобытия ,@ВремяНапоминания ,@ИсточникИнформацииПриОбращении ,@Комментарий ,@НапомнитьОСобытии ,@НачалоСобытия ,@ОкончаниеСобытия ,@ОписаниеСобытия ,@Ответственный ,@Помещение ,@Проект ,@СодержаниеСобытия ,@СостояниеСобытия ,@Территория ,@ТипСобытия ,@ГруппаСобытия ,@ЕстьВложения ,@КонтактноеЛицоБезКонтрагента ,@ИнтервалНапоминания ,@ПредметКонтакта ,@ЗаявкаКандидата)" ; } else { Команда.CommandText = @" Update _Document452 Set /*_IDRRef = @Ссылка*/ /*,_Version = @Версия*/ _Marked = @ПометкаУдаления ,_Number = @Номер ,_Fld11506 = @АдресЭлектроннойПочты ,_Fld11507RRef = @Важность ,_Fld11508RRef = @ВидОбъекта ,_Fld11509RRef = @ВидСобытия ,_Fld11510 = @ВремяНапоминания ,_Fld11511RRef = @ИсточникИнформацииПриОбращении ,_Fld11512 = @Комментарий ,_Fld11515 = @НапомнитьОСобытии ,_Fld11516 = @НачалоСобытия ,_Fld11517 = @ОкончаниеСобытия ,_Fld11518 = @ОписаниеСобытия ,_Fld11520RRef = @Ответственный ,_Fld11521RRef = @Помещение ,_Fld11522RRef = @Проект ,_Fld11523 = @СодержаниеСобытия ,_Fld11524RRef = @СостояниеСобытия ,_Fld11525RRef = @Территория ,_Fld11526RRef = @ТипСобытия ,_Fld11527RRef = @ГруппаСобытия ,_Fld11528 = @ЕстьВложения ,_Fld11529RRef = @КонтактноеЛицоБезКонтрагента ,_Fld11530 = @ИнтервалНапоминания ,_Fld11531 = @ПредметКонтакта ,_Fld22251RRef = @ЗаявкаКандидата 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("ПредметКонтакта", ПредметКонтакта); Команда.ExecuteNonQuery(); } } }
public static byte[] Ключ(this Важность Значение) { return(Ссылка(Значение).ToByteArray()); }
public static Важность Получить(this Важность Значение, byte[] Ссылка) { return(Получить(Значение, new Guid(Ссылка))); }
public void Записать() { //Установка блокировки элемента на горизантально масштабированный кластер. //Опционально введение тайм аута на запись одного и того же объекта, не чаще раза в 5-секунд. Защита от спама. упращение алгоритма блокировки. //Выделение сервиса для блокировки элемента и генерации кода //Выполнение операций контроля без обращений к sql-серверу. //Контроль конфликта блокировок. //Контроль загрузки булкинсертом гетерогенной коллекции. //Контроль уникальности кода для справочников. //Контроль уникальности номера для документов, в границах префикса. //Контроль владельца, он не может быть группой. //Контроль владельца он должен быть задан. //Контроль родителя он должен быть группой. //Контроль количества уровней, должен соотвествовать метаданным. //Контроль версии, объект не должен был быть записан перед чтением текущей записи, алгоритм версионника. //Контроль уникальности ссылки //Контроль зацикливания //Опционально контроль битых ссылок. //Соблюдейние транзакционности. ПередЗаписью. Открытие транзации. Валидации. ПриЗаписи. Фиксация транзакции. Информирование о записи элемента. using (var Подключение = new SqlConnection(СтрокаСоединения)) { Подключение.Open(); using (var Команда = Подключение.CreateCommand()) { if (_ЭтоНовый) { Команда.CommandText = @" Insert Into _Reference19638( _IDRRef /*,_Version*/ ,_Marked ,_IsMetadata ,_Code ,_Description ,_Fld19741RRef ,_Fld19742RRef ,_Fld19743RRef ,_Fld19744 ,_Fld19745 ,_Fld19746 ,_Fld19747RRef ,_Fld19748 ,_Fld19749RRef ,_Fld19750RRef ,_Fld19752RRef ,_Fld19753RRef ,_Fld19754RRef) Values( @Ссылка /*,@Версия*/ ,@ПометкаУдаления ,@Предопределенный ,@Код ,@Наименование ,@ФизЛицо ,@Состояние ,@Важность ,@Комментарий ,@Закрыта ,@РезультатЗакрытия ,@ГруппаЗаявок ,@ДатаОткрытия ,@ИсточникИнформации ,@Вакансия ,@Должность ,@Организация ,@Ответственный)" ; } else { Команда.CommandText = @" Update _Reference19638 Set /*_IDRRef = @Ссылка*/ /*,_Version = @Версия*/ _Marked = @ПометкаУдаления ,_IsMetadata = @Предопределенный ,_Code = @Код ,_Description = @Наименование ,_Fld19741RRef = @ФизЛицо ,_Fld19742RRef = @Состояние ,_Fld19743RRef = @Важность ,_Fld19744 = @Комментарий ,_Fld19745 = @Закрыта ,_Fld19746 = @РезультатЗакрытия ,_Fld19747RRef = @ГруппаЗаявок ,_Fld19748 = @ДатаОткрытия ,_Fld19749RRef = @ИсточникИнформации ,_Fld19750RRef = @Вакансия ,_Fld19752RRef = @Должность ,_Fld19753RRef = @Организация ,_Fld19754RRef = @Ответственный 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("Ответственный", Ответственный.Ссылка); Команда.ExecuteNonQuery(); } } }