public void Записать()
{
//Установка блокировки элемента на горизантально масштабированный кластер.
//Опционально введение тайм аута на запись одного и того же объекта, не чаще раза в 5-секунд. Защита от спама. упращение алгоритма блокировки.
//Выделение сервиса для блокировки элемента и генерации кода
//Выполнение операций контроля без обращений к sql-серверу.
//Контроль конфликта блокировок.
//Контроль загрузки булкинсертом гетерогенной коллекции.
//Контроль уникальности кода для справочников.
//Контроль уникальности номера для документов, в границах префикса.
//Контроль владельца, он не может быть группой.
//Контроль владельца он должен быть задан.
//Контроль родителя он должен быть группой.
//Контроль количества уровней, должен соотвествовать метаданным.
//Контроль версии, объект не должен был быть записан перед чтением текущей записи, алгоритм версионника.
//Контроль уникальности ссылки
//Контроль зацикливания
//Опционально контроль битых ссылок.
//Соблюдейние транзакционности. ПередЗаписью. Открытие транзации. Валидации. ПриЗаписи. Фиксация транзакции. Информирование о записи элемента.
using (var Подключение = new SqlConnection(СтрокаСоединения))
{
Подключение.Open();
using (var Команда = Подключение.CreateCommand())
{
if(_ЭтоНовый)
{
Команда.CommandText = @"
Insert Into _Reference189(
_IDRRef
/*,_Version*/
,_Marked
,_IsMetadata
,_Code
,_Description
,_Fld2144
,_Fld2145
,_Fld2146
,_Fld2147
,_Fld2148
,_Fld2149
,_Fld2150
,_Fld2151
,_Fld2152
,_Fld2153
,_Fld2154
,_Fld2155
,_Fld2156
,_Fld2157
,_Fld2158RRef
,_Fld2159RRef
,_Fld2160RRef
,_Fld2161RRef
,_Fld21295RRef
,_Fld2162RRef
,_Fld2163
,_Fld2164
,_Fld2165
,_Fld2166
,_Fld2167
,_Fld2168RRef
,_Fld2169
,_Fld2170RRef
,_Fld2171
,_Fld2172
,_Fld2180
,_Fld2181
,_Fld2173
,_Fld2174
,_Fld2175
,_Fld2176
,_Fld2182
,_Fld2177
,_Fld2178
,_Fld2179
,_Fld2183
,_Fld2184
,_Fld2185
,_Fld21296RRef
,_Fld26646
,_Fld26647)
Values(
@Ссылка
/*,@Версия*/
,@ПометкаУдаления
,@Предопределенный
,@Код
,@Наименование
,@SMTPСервер
,@POP3Сервер
,@ПортSMTP
,@ПортPOP3
,@Логин
,@Пароль
,@ТребуетсяSMTPАутентификация
,@ЛогинSMTP
,@ПарольSMTP
,@ВремяОжиданияСервера
,@ОставлятьКопииСообщенийНаСервере
,@УдалятьПисьмаССервераЧерез
,@КоличествоДнейУдаленияПисемССервера
,@АдресЭлектроннойПочты
,@ГруппаВходящие
,@ГруппаИсходящие
,@ГруппаУдаленные
,@ГруппаЧерновики
,@ГруппаНежелательные
,@ФорматТекстаПисьмаПоУмолчанию
,@ТекстПодписи
,@ДобавлятьПодписьКИсходящимПисьмам
,@ДобавлятьПодписьКОтветамИПересылкам
,@АвтоПолучениеОтправкаСообщений
,@ИнтервалАвтоПолученияОтправкиСообщений
,@ОтветственныйЗаАвтоПолучениеОтправкуСообщений
,@ПомещатьОтветыИПереадресацииВТужеГруппу
,@ДействиеАвтополученияОтправкиСообщений
,@АвтоматическаяУстановкаПометкиРассмотрено
,@ИнтервалАвтоматическойУстановкиОтметкиРассмотрено
,@АвтоматическаяУстановкаПометкиРассмотреноПриОтвете
,@АвтоматическаяУстановкаПометкиРассмотреноПриПолученииОтвета
,@ИспользоватьКлассификациюПисемПоПредметам
,@ЗаполнятьПустойПредметДляНовыхПисемИзТемыПисьма
,@ДляВходящихОтветовИПереадресацийИскатьПисьмаОснованияИЗаполнятьПредмет
,@ДляВходящихОтветовИПереадресацийИскатьПисьмаОснованияИЗаполнятьОснованиеНовогоПисьма
,@ДляВходящихОтветовИПереадресацийИскатьПисьмаОснованияИЗаполнятьГруппуПисемНовогоПисьма
,@АвтосохранениеПисем
,@ИнтервалАвтосохраненияПисем
,@ФорматПисьмаДляОтветовИПереадресацийБратьИзИсходного
,@КодировкаПисемПоУмолчанию
,@КодировкуПисьмаДляОтветовБратьИзИсходного
,@ЗаполнятьОбъектыИзАдресовПервогоПисьма
,@НазначениеУчетнойЗаписи
,@ИспользоватьДляОтправки
,@ИспользоватьДляПолучения)";
}
else
{
Команда.CommandText = @"
Update _Reference189
Set
/*_IDRRef = @Ссылка*/
/*,_Version = @Версия*/
_Marked = @ПометкаУдаления
,_IsMetadata = @Предопределенный
,_Code = @Код
,_Description = @Наименование
,_Fld2144 = @SMTPСервер
,_Fld2145 = @POP3Сервер
,_Fld2146 = @ПортSMTP
,_Fld2147 = @ПортPOP3
,_Fld2148 = @Логин
,_Fld2149 = @Пароль
,_Fld2150 = @ТребуетсяSMTPАутентификация
,_Fld2151 = @ЛогинSMTP
,_Fld2152 = @ПарольSMTP
,_Fld2153 = @ВремяОжиданияСервера
,_Fld2154 = @ОставлятьКопииСообщенийНаСервере
,_Fld2155 = @УдалятьПисьмаССервераЧерез
,_Fld2156 = @КоличествоДнейУдаленияПисемССервера
,_Fld2157 = @АдресЭлектроннойПочты
,_Fld2158RRef = @ГруппаВходящие
,_Fld2159RRef = @ГруппаИсходящие
,_Fld2160RRef = @ГруппаУдаленные
,_Fld2161RRef = @ГруппаЧерновики
,_Fld21295RRef = @ГруппаНежелательные
,_Fld2162RRef = @ФорматТекстаПисьмаПоУмолчанию
,_Fld2163 = @ТекстПодписи
,_Fld2164 = @ДобавлятьПодписьКИсходящимПисьмам
,_Fld2165 = @ДобавлятьПодписьКОтветамИПересылкам
,_Fld2166 = @АвтоПолучениеОтправкаСообщений
,_Fld2167 = @ИнтервалАвтоПолученияОтправкиСообщений
,_Fld2168RRef = @ОтветственныйЗаАвтоПолучениеОтправкуСообщений
,_Fld2169 = @ПомещатьОтветыИПереадресацииВТужеГруппу
,_Fld2170RRef = @ДействиеАвтополученияОтправкиСообщений
,_Fld2171 = @АвтоматическаяУстановкаПометкиРассмотрено
,_Fld2172 = @ИнтервалАвтоматическойУстановкиОтметкиРассмотрено
,_Fld2180 = @АвтоматическаяУстановкаПометкиРассмотреноПриОтвете
,_Fld2181 = @АвтоматическаяУстановкаПометкиРассмотреноПриПолученииОтвета
,_Fld2173 = @ИспользоватьКлассификациюПисемПоПредметам
,_Fld2174 = @ЗаполнятьПустойПредметДляНовыхПисемИзТемыПисьма
,_Fld2175 = @ДляВходящихОтветовИПереадресацийИскатьПисьмаОснованияИЗаполнятьПредмет
,_Fld2176 = @ДляВходящихОтветовИПереадресацийИскатьПисьмаОснованияИЗаполнятьОснованиеНовогоПисьма
,_Fld2182 = @ДляВходящихОтветовИПереадресацийИскатьПисьмаОснованияИЗаполнятьГруппуПисемНовогоПисьма
,_Fld2177 = @АвтосохранениеПисем
,_Fld2178 = @ИнтервалАвтосохраненияПисем
,_Fld2179 = @ФорматПисьмаДляОтветовИПереадресацийБратьИзИсходного
,_Fld2183 = @КодировкаПисемПоУмолчанию
,_Fld2184 = @КодировкуПисьмаДляОтветовБратьИзИсходного
,_Fld2185 = @ЗаполнятьОбъектыИзАдресовПервогоПисьма
,_Fld21296RRef = @НазначениеУчетнойЗаписи
,_Fld26646 = @ИспользоватьДляОтправки
,_Fld26647 = @ИспользоватьДляПолучения
Where _IDRRef = @Ссылка";
}
Команда.Parameters.AddWithValue("Ссылка", Ссылка.ToByteArray());
/*Команда.Parameters.AddWithValue("Версия", Версия);*/
Команда.Parameters.AddWithValue("ПометкаУдаления", ПометкаУдаления);
Команда.Parameters.AddWithValue("Предопределенный", Предопределенный);
Команда.Parameters.AddWithValue("Код", Код);
Команда.Parameters.AddWithValue("Наименование", Наименование);
Команда.Parameters.AddWithValue("SMTPСервер", SMTPСервер);
Команда.Parameters.AddWithValue("POP3Сервер", POP3Сервер);
Команда.Parameters.AddWithValue("ПортSMTP", ПортSMTP);
Команда.Parameters.AddWithValue("ПортPOP3", ПортPOP3);
Команда.Parameters.AddWithValue("Логин", Логин);
Команда.Parameters.AddWithValue("Пароль", Пароль);
Команда.Parameters.AddWithValue("ТребуетсяSMTPАутентификация", ТребуетсяSMTPАутентификация);
Команда.Parameters.AddWithValue("ЛогинSMTP", ЛогинSMTP);
Команда.Parameters.AddWithValue("ПарольSMTP", ПарольSMTP);
Команда.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();
}
}
}