powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Удаление строк из датасет
64 сообщений из 64, показаны все 3 страниц
Удаление строк из датасет
    #39293427
Здравствуйте.

У меня впервые возникла проблема с удалением строк из датасет. Не пойму, в чём дело.
Ситуация следующая:
у меня есть датасет ZdanieInfo.ClassSet.myDs.Tables["ZdanieConstruction"], содержащий 17 строк.
В цикле я удаляю 2 строки.
Вывожу сообщение с количеством строк до удаления и после.
Сообщение до удаления показывает 17 строк и после удаления 17 строк. Вроде бы не удаляет.
Но этот сет является источником данных для Datagridview и в гриде показывается уже 15 строк. Но этот грид уже на другой форме, а мне нужно в сете здесь еще некоторые действия выполнить с 15 строками.
Подскажите, пожалуйста, кто знает в чём может быть дело. Заранее большое спасибо.

Привожу код удаления строк, С#:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
MessageBox.Show(ClassSet.myDs.Tables["ZdanieConstruction"].Rows.Count.ToString(), "до удаления", MessageBoxButtons.OK, MessageBoxIcon.Error);
            
            DataRow nrowZdanieConstruction1;

            for (int j = 0; j < ClassSet.myDs.Tables["ZdanieConstruction"].Rows.Count; ++j)
            {
                if (ClassSet.myDs.Tables["ZdanieConstruction"].Rows[j]["KonstrType"].ToString().Trim() == "Пол по грунту".Trim()
                    || ClassSet.myDs.Tables["ZdanieConstruction"].Rows[j]["KonstrType"].ToString().Trim() == "Стена в грунте".Trim())
                {
                    nrowZdanieConstruction1 = ClassSet.myDs.Tables["ZdanieConstruction"].Rows.Find(ClassSet.myDs.Tables["ZdanieConstruction"].Rows[j]["Id_OKPirog"].ToString());
                    nrowZdanieConstruction1.Delete();                    
                }
            }
            MessageBox.Show(ClassSet.myDs.Tables["ZdanieConstruction"].Rows.Count.ToString(), "после удаления", MessageBoxButtons.OK, MessageBoxIcon.Error);
...
Рейтинг: 0 / 0
Удаление строк из датасет
    #39293434
Сет объявила в отдельном классе
Код: c#
1.
public static System.Data.DataSet myDs;
...
Рейтинг: 0 / 0
Удаление строк из датасет
    #39293442
VAlexey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Петрова Елена,

После выполнения метода Delete() у DataRow меняется свойство RowState на DataRowState.Deleted, но строка остается.
Вообще это нужно, чтобы можно было сохранить изменения в БД.
Если это не требуется, то можно вызвать метод AcceptChanges() у DataRow либо у всей таблицы, либо у всего DataSet и тогда строки удалятся совсем.
...
Рейтинг: 0 / 0
Удаление строк из датасет
    #39293443
Фотография ЕвгенийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Петрова Елена,
Леночка, солнышко, а в справку лень глянуть?
https://msdn.microsoft.com/ru-ru/library/system.data.datarow.delete(v=vs.110).aspx
...
Рейтинг: 0 / 0
Удаление строк из датасет
    #39293456
спасибо
...
Рейтинг: 0 / 0
Удаление строк из датасет
    #39293521
Мойшик Трунькин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
зачем в 2016 использовать датасет. у них и раньше назначение было очень специфическое (судя по вопросу ТС - это не тот случай). а сейчас вообще не актуально
...
Рейтинг: 0 / 0
Удаление строк из датасет
    #39293541
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Петрова Елена
Код: c#
1.
for (int j = 0; j < ClassSet.myDs.Tables["ZdanieConstruction"].Rows.Count; ++j)


Это ничего, что первая строка не участвует в рассчетах?
...
Рейтинг: 0 / 0
Удаление строк из датасет
    #39293542
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Мойшик Трунькинзачем в 2016 использовать датасет. у них и раньше назначение было очень специфическое (судя по вопросу ТС - это не тот случай). а сейчас вообще не актуально
И вот, наконец, подтянулись те, кто не понимает что такое база данных, не понимает что такое DataSet и не умеют с ним работать
...
Рейтинг: 0 / 0
Удаление строк из датасет
    #39293544
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Петрова Елена
Код: c#
1.
nrowZdanieConstruction1.Delete();           


Всего-то надо после этого вставить строку

Код: c#
1.
ClassSet.myDs.Tables["ZdanieConstruction"].AcceptChanges();
...
Рейтинг: 0 / 0
Удаление строк из датасет
    #39293545
Мойшик Трунькин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cat2Мойшик Трунькинзачем в 2016 использовать датасет. у них и раньше назначение было очень специфическое (судя по вопросу ТС - это не тот случай). а сейчас вообще не актуально
И вот, наконец, подтянулись те, кто не понимает что такое база данных, не понимает что такое DataSet и не умеют с ним работать

ну, уважаемый, Cat2, растолкуйте, чем этот старый зверь - DataSet - заслуживает право на жизнь в современных реалиях
...
Рейтинг: 0 / 0
Удаление строк из датасет
    #39293549
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Мойшик ТрунькинCat2пропущено...

И вот, наконец, подтянулись те, кто не понимает что такое база данных, не понимает что такое DataSet и не умеют с ним работать

ну, уважаемый, Cat2, растолкуйте, чем этот старый зверь - DataSet - заслуживает право на жизнь в современных реалиях
Это Вы объявляете, что он плох и не моден. У DataSet презумпция невиновности.
...
Рейтинг: 0 / 0
Удаление строк из датасет
    #39293552
Мойшик Трунькин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cat2Мойшик Трунькинпропущено...


ну, уважаемый, Cat2, растолкуйте, чем этот старый зверь - DataSet - заслуживает право на жизнь в современных реалиях
Это Вы объявляете, что он плох и не моден. У DataSet презумпция невиновности.

Тогда я скажу. Как глобально/локальное хранилище данных, якобы из коробки "синхронизирующееся" с основной БД, я пытался его использовать. Геморою огреб, да и вообще такое - пишется кастомно. Типизации нет. SQL вкорячивается прямо внутрь (фу так делать). Не тестируемое. Сопровождать - адд, легче выкинуть, и просто на ADO написать. Ну и еще много чего, я уже не помню, лет ~10 назад про него забыл
...
Рейтинг: 0 / 0
Удаление строк из датасет
    #39293559
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мойшик Трунькин,
ну почему же, многие первоклассники начинают с него, как он более разжёван в книгах и писдякается автоматом через мышку
и как следствие наличие мозга СОВСЕМ не обязательно, есть еще более жесть - типизированный, но по прошествии - согласен - это жуткий атавизм, единственное оправдание его использование в продакшене - добраться как то до дома, в отсутствие прокладок и тампаксов
ОПЯТЬ ЖЕ ВСЕ ИМХО..
...
Рейтинг: 0 / 0
Удаление строк из датасет
    #39293569
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Мойшик ТрунькинКак глобально/локальное хранилище данных, якобы из коробки "синхронизирующееся" с основной БД, я пытался его использовать.
Его надо использовать по другому. Как отображение реальной базы в модель на клиенте.
Ваша неудача говорит только о неудачном подходе к применению
...
Рейтинг: 0 / 0
Удаление строк из датасет
    #39293574
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cat2,
это ж какую вьюху надо иметь на клиенте ( наверное с мордой коли валуева( считать однофамильцем)) что бы забиндить на него
датасет?
...
Рейтинг: 0 / 0
Удаление строк из датасет
    #39293580
Мойшик Трунькин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cat2Его надо использовать по другому. Как отображение реальной базы в модель на клиенте

дадасет не поможет для онлайн/оффлайн БД. а для всего остального - он нафиг не нужен.
...
Рейтинг: 0 / 0
Удаление строк из датасет
    #39293582
Мойшик Трунькин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cat2Как отображение реальной базы в модель на клиенте

для этого есть хибер и EF
...
Рейтинг: 0 / 0
Удаление строк из датасет
    #39293583
Мойшик Трунькин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
хибер дружит даже с говнолегаси базами, ибо очень гибок
...
Рейтинг: 0 / 0
Удаление строк из датасет
    #39293584
JVF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мойшик ТрунькинCat2Как отображение реальной базы в модель на клиенте

для этого есть хибер и EFтеже фэбэржэ (DataSet), только в профиль.
временное хоронилище.
...
Рейтинг: 0 / 0
Удаление строк из датасет
    #39293586
Мойшик Трунькин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JVFМойшик Трунькинпропущено...


для этого есть хибер и EFтеже фэбэржэ (DataSet), только в профиль.
временное хоронилище.

ошибаетесь

вот, про хибер
http://nhibernate.info/doc/nh/en/index.html
...
Рейтинг: 0 / 0
Удаление строк из датасет
    #39293587
Мойшик Трунькин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
EF - примерно тоже самое. на легаси базах я его, правда, не обкатывал, только когда с нуля была разработка. может и по-хилее хибера будет
...
Рейтинг: 0 / 0
Удаление строк из датасет
    #39293589
Фотография ЕвгенийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мойшик Трунькинхибер дружит даже с говнолегаси базами, ибо очень гибок
Че докопался то? Ну дружит и дружит.
...
Рейтинг: 0 / 0
Удаление строк из датасет
    #39293590
JVF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мойшик Трунькин,

что DS, что EF, без разницы, - существуют для ламеров, осуществляя синхронизацию приложения с БД без использования SQL-ля.
...
Рейтинг: 0 / 0
Удаление строк из датасет
    #39293594
Мойшик Трунькин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JVFбез использования SQL-ля.

ниче подобного. SQL даже ще больше рулит (только правильный, канонический). К тому же иногда проще и эффективней подсунуть готовый SQL орм-му
...
Рейтинг: 0 / 0
Удаление строк из датасет
    #39293597
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мойшик ТрунькинCat2Как отображение реальной базы в модель на клиенте

для этого есть хибер и EF
Это не ле чится
...
Рейтинг: 0 / 0
Удаление строк из датасет
    #39293599
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мойшик ТрунькинJVFбез использования SQL-ля.

ниче подобного. SQL даже ще больше рулит (только правильный, канонический). К тому же иногда проще и эффективней подсунуть готовый SQL орм-му
А может просто исполнить sql никуда ничего не подсовывая?
...
Рейтинг: 0 / 0
Удаление строк из датасет
    #39293600
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Где-то в степиCat2,
это ж какую вьюху надо иметь на клиенте ( наверное с мордой коли валуева( считать однофамильцем)) что бы забиндить на него
датасет?
Можно и не по вьюхе, а по выборке из хранимой процедуры.
Хотя вьюхи тоже подойдут. Это же не материальный объект в базе, а просто некое правило для соединения таблиц
...
Рейтинг: 0 / 0
Удаление строк из датасет
    #39293604
JVF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мойшик Трунькинвот, про хибер
http://nhibernate.info/doc/nh/en/index.html сына, открой для себя укросубд "Стебелек".

https://github.com/Bazist/DniproClient.NET/tree/master/DniproClient
...
Рейтинг: 0 / 0
Удаление строк из датасет
    #39293650
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cat2,
вообще дс задумывался как механизм работы с портфельными данными, тогда и про мувице и мапинг никто не слышал
может выгружать требуха в xml со всеми атрибутами для целостности данных, пользовали в пятом г. - знаем.
Можно пользовать и дальше - он валиден, но по мне уж лучше под жопой держать sqlite со всеми вкусняшками.
вот у меня в среднем проекте 60 таблиц на клиенте, и что держать все это хозяйство там? лайт тоже стреляет очень быстро
да и ооп проекция немаловажный фактор. так что ОТ ПАРОВОЗА ТОЛЬКО К ПАРОВОЗУ..
...
Рейтинг: 0 / 0
Удаление строк из датасет
    #39293696
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мойшик Трунькинрастолкуйте, чем этот старый зверь - DataSet - заслуживает право на жизнь в современных реалиях
1. Удобен, если схема данных не известна на этапе разработки, известна только на этапе исполнения.

2. "Халявная" модель данных с отслеживанием изменений.

3. Производительность - нет "тяжёлого" холодного запуска, нет необходимости кодогенерации через Emit.
...
Рейтинг: 0 / 0
Удаление строк из датасет
    #39293700
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИзопропилМойшик Трунькинпропущено...


ниче подобного. SQL даже ще больше рулит (только правильный, канонический). К тому же иногда проще и эффективней подсунуть готовый SQL орм-му
А может просто исполнить sql никуда ничего не подсовывая?Результаты выполнения SQL всё равно куда-то нужно пихать, лучше в ОРМ.
...
Рейтинг: 0 / 0
Удаление строк из датасет
    #39294146
Мойшик Трунькин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КИзопропилпропущено...

А может просто исполнить sql никуда ничего не подсовывая?Результаты выполнения SQL всё равно куда-то нужно пихать, лучше в ОРМ.

а других вариантов-то и нет. только это будет либо самодельная недоОРМ, или нормальная
...
Рейтинг: 0 / 0
Удаление строк из датасет
    #39294148
Мойшик Трунькин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JVFМойшик Трунькинвот, про хибер
http://nhibernate.info/doc/nh/en/index.html сына, открой для себя укросубд "Стебелек".

https://github.com/Bazist/DniproClient.NET/tree/master/DniproClient

пользуйся им сам
...
Рейтинг: 0 / 0
Удаление строк из датасет
    #39294155
Мойшик Трунькин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей К1. Удобен, если схема данных не известна на этапе разработки, известна только на этапе исполнения

и автогенеренный гуй? а бизнес логика исполняется как динамический скрипт?

динамические приложения БД - это очень специфическая облать. может там и имеет место быть, но там, по сравнению со всем остальным, это такие кропали. тогда уж сразу лучше 1С
...
Рейтинг: 0 / 0
Удаление строк из датасет
    #39294357
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мойшик ТрунькинАлексей Кпропущено...
Результаты выполнения SQL всё равно куда-то нужно пихать, лучше в ОРМ.

а других вариантов-то и нет. только это будет либо самодельная недоОРМ, или нормальная
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
public static class СамодельнаяОрмЗа5Минут
{
        public static IEnumerable<T> ExecuteReader<T>(this DbCommand command, Func<DbDataReader, T> mapper)
        {
            using (var reader = command.ExecuteReader())
                while (reader.Read())
                    yield return mapper(reader);
        }
}
...
Рейтинг: 0 / 0
Удаление строк из датасет
    #39294367
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИзопропилМойшик Трунькинпропущено...


ниче подобного. SQL даже ще больше рулит (только правильный, канонический). К тому же иногда проще и эффективней подсунуть готовый SQL орм-му
А может просто исполнить sql никуда ничего не подсовывая?SQL вручную предлагается писать? А то к хорошему в LINQ уже привыкли: ассоциации, let и т. п.
...
Рейтинг: 0 / 0
Удаление строк из датасет
    #39294864
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Алексей КИзопропилпропущено...

А может просто исполнить sql никуда ничего не подсовывая?SQL вручную предлагается писать? А то к хорошему в LINQ уже привыкли: ассоциации, let и т. п.
Зачем вручную? Есть графические построители запросов.
Чутка подрихтуешь напильником и, в путь!
...
Рейтинг: 0 / 0
Удаление строк из датасет
    #39295279
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cat2Есть графические построители запросов.Сомнительное удовольствие.
...
Рейтинг: 0 / 0
Удаление строк из датасет
    #39295709
Мойшик Трунькин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КCat2Есть графические построители запросов.Сомнительное удовольствие.


это для мазохистов. датасет - умер. и царство ему небесное.
...
Рейтинг: 0 / 0
Удаление строк из датасет
    #39295755
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cat2Зачем вручную?
я слабо себе представляю, как можно визуализировать запросы, отличные оп пачки join
...
Рейтинг: 0 / 0
Удаление строк из датасет
    #39295864
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Мойшик ТрунькинАлексей Кпропущено...
Сомнительное удовольствие.


это для мазохистов. датасет - умер. и царство ему небесное.
Родились те, кто не понимает как его использовать
...
Рейтинг: 0 / 0
Удаление строк из датасет
    #39295866
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
ИзопропилCat2Зачем вручную?
я слабо себе представляю, как можно визуализировать запросы, отличные оп пачки join
А на автогенерируемые и смотреть-то тошно
...
Рейтинг: 0 / 0
Удаление строк из датасет
    #39295878
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cat2Изопропилпропущено...

я слабо себе представляю, как можно визуализировать запросы, отличные оп пачки join
А на автогенерируемые и смотреть-то тошноПлан выполнения зависит от красоты запроса?
...
Рейтинг: 0 / 0
Удаление строк из датасет
    #39295922
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Алексей К,

Вот у этого, автосгененированного, и нормального точно отличаются

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
UPDATE    DgnTest
SET              TypeId = @TypeId, Sort = @Sort, Test = @Test, Description = @Description, P0 = @P0, V0 = @V0, P1 = @P1, V1 = @V1, P2 = @P2, V2 = @V2, P3 = @P3, V3 = @V3, 
                      Result = @Result, ResultText = @ResultText, helpdesk = @helpdesk, helpdesk2 = @helpdesk2, Info = @Info, Func = @Func, Did = @Did, UserInfo = @UserInfo, 
                      Server = @Server, Local = @Local, UserHelpdesk = @UserHelpdesk, Active = @Active, BreefError = @BreefError, Recomendation = @Recomendation, Auto = @Auto, 
                      TestGroup = @TestGroup
WHERE     (TestId = @Original_TestId) AND (TypeId = @Original_TypeId) AND (@IsNull_Sort = 1 AND Sort IS NULL OR
                      Sort = @Original_Sort) AND (@IsNull_Test = 1 AND Test IS NULL OR
                      Test = @Original_Test) AND (@IsNull_Description = 1 AND Description IS NULL OR
                      Description = @Original_Description) AND (@IsNull_P0 = 1 AND P0 IS NULL OR
                      P0 = @Original_P0) AND (@IsNull_V0 = 1 AND V0 IS NULL OR
                      V0 = @Original_V0) AND (@IsNull_P1 = 1 AND P1 IS NULL OR
                      P1 = @Original_P1) AND (@IsNull_V1 = 1 AND V1 IS NULL OR
                      V1 = @Original_V1) AND (@IsNull_P2 = 1 AND P2 IS NULL OR
                      P2 = @Original_P2) AND (@IsNull_V2 = 1 AND V2 IS NULL OR
                      V2 = @Original_V2) AND (@IsNull_P3 = 1 AND P3 IS NULL OR
                      P3 = @Original_P3) AND (@IsNull_V3 = 1 AND V3 IS NULL OR
                      V3 = @Original_V3) AND (Result = @Original_Result) AND (@IsNull_ResultText = 1 AND ResultText IS NULL OR
                      ResultText = @Original_ResultText) AND (@IsNull_helpdesk = 1 AND helpdesk IS NULL OR
                      helpdesk = @Original_helpdesk) AND (@IsNull_helpdesk2 = 1 AND helpdesk2 IS NULL OR
                      helpdesk2 = @Original_helpdesk2) AND (Info = @Original_Info) AND (@IsNull_Func = 1 AND Func IS NULL OR
                      Func = @Original_Func) AND (Did = @Original_Did) AND (UserInfo = @Original_UserInfo) AND (Server = @Original_Server) AND (Local = @Original_Local) AND 
                      (@IsNull_UserHelpdesk = 1 AND UserHelpdesk IS NULL OR
                      UserHelpdesk = @Original_UserHelpdesk) AND (Active = @Original_Active) AND (@IsNull_BreefError = 1 AND BreefError IS NULL OR
                      BreefError = @Original_BreefError) AND (@IsNull_Recomendation = 1 AND Recomendation IS NULL OR
                      Recomendation = @Original_Recomendation) AND (Auto = @Original_Auto) AND (@IsNull_TestGroup = 1 AND TestGroup IS NULL OR
                      TestGroup = @Original_TestGroup)
...
Рейтинг: 0 / 0
Удаление строк из датасет
    #39295966
Фотография ЕвгенийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИзопропилCat2Зачем вручную?
я слабо себе представляю, как можно визуализировать запросы, отличные оп пачки join
Ну например можно попробовать избавиться от многословности. Когда появились аналитические решения уравнений 4 степени , формулы записывались словами и для решения нужна была не слабая подготовка.
Потом Виет и Лейбниц придумали математические обозначения.
Тут думаю возможно нечто подобное, как минимум если записывать компактнее, то все будет проще восприниматься визуально.
...
Рейтинг: 0 / 0
Удаление строк из датасет
    #39295976
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЕвгенийВ,

SQL - это и есть математическое обозначение
...
Рейтинг: 0 / 0
Удаление строк из датасет
    #39296000
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Изопропил,
++ в один це особенно ))
...
Рейтинг: 0 / 0
Удаление строк из датасет
    #39296004
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cat2Вот у этого, автосгененированного, и нормального точно отличаются
Тут есть смысл добавить в таблицу поле timestamp, тогда генератор ограничится только проверкой этого поля вместо того чтобы генерить портянку проверок что значение каждого из полей не поменялось.
...
Рейтинг: 0 / 0
Удаление строк из датасет
    #39296017
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Dima TCat2Вот у этого, автосгененированного, и нормального точно отличаются
Тут есть смысл добавить в таблицу поле timestamp, тогда генератор ограничится только проверкой этого поля вместо того чтобы генерить портянку проверок что значение каждого из полей не поменялось.
Тут достаточно убрать всю лабуду из проверки, так как суррогатный первичный ключ по полю TestId не меняется никогда
...
Рейтинг: 0 / 0
Удаление строк из датасет
    #39296029
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cat2Тут достаточно убрать всю лабуду из проверки, так как суррогатный первичный ключ по полю TestId не меняется никогда
Смысл лабуды в том что она проверяет что текущее состояние у записи такое же как закэшировано на клиенте, т.е. проверка что между чтением и записью не было изменения другим клиентом. Если это не нужно, то надо отключать. Я тут 19541675 спрашивал как это проверяторство по дефолту отключить, никто не подсказал.
...
Рейтинг: 0 / 0
Удаление строк из датасет
    #39296030
Фотография ЕвгенийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИзопропилЕвгенийВ,

SQL - это и есть математическое обозначение
Можно еще как то так.
ДРАКОН
...
Рейтинг: 0 / 0
Удаление строк из датасет
    #39296038
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Где-то в степиИзопропил,
++ в один це особенно ))
я ж про SQL )

а что касается мышководства - как визуально рисовать коррелированные подзапросы,
иерархические запросы, оконные функции ?
...
Рейтинг: 0 / 0
Удаление строк из датасет
    #39296056
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Изопропил,
авторкак визуально рисовать коррелированные подзапросы,
иерархические запросы, оконные функции
гм, не знаю... никогда этим не занимался, хотя вру.. иногда бывало еб--щь по форме что бы лоадер возбудить не более..
...
Рейтинг: 0 / 0
Удаление строк из датасет
    #39296058
Фотография ЕвгенийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Изопропил
а что касается мышководства - как визуально рисовать коррелированные подзапросы,
иерархические запросы, оконные функции ?
А в чем проблема? Выносишь тот же коррелированный подзапрос в отдельный блок и потом подсовываешь в нужном месте.
...
Рейтинг: 0 / 0
Удаление строк из датасет
    #39296066
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЕвгенийВВыносишь тот же коррелированный подзапрос в отдельный блок и потом подсовываешь в нужном месте.
а корреляции как отображать?

и тета-соединения?
...
Рейтинг: 0 / 0
Удаление строк из датасет
    #39296145
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Dima TCat2Тут достаточно убрать всю лабуду из проверки, так как суррогатный первичный ключ по полю TestId не меняется никогда
Смысл лабуды в том что она проверяет что текущее состояние у записи такое же как закэшировано на клиенте, т.е. проверка что между чтением и записью не было изменения другим клиентом. Если это не нужно, то надо отключать. Я тут 19541675 спрашивал как это проверяторство по дефолту отключить, никто не подсказал.
Я понимаю в чем тут смысл и это было бы оправдано, если бы у таблицы не был бы уникального ключа по автоинкремененту, но предложение ввести поле timespan вполне себе в духе любиетелей EF, не осиливших реляционную теорию
...
Рейтинг: 0 / 0
Удаление строк из датасет
    #39296159
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
ИзопропилЕвгенийВВыносишь тот же коррелированный подзапрос в отдельный блок и потом подсовываешь в нужном месте.
а корреляции как отображать?

и тета-соединения?
Что не так с тета?
...
Рейтинг: 0 / 0
Удаление строк из датасет
    #39296162
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cat2Dima Tпропущено...

Смысл лабуды в том что она проверяет что текущее состояние у записи такое же как закэшировано на клиенте, т.е. проверка что между чтением и записью не было изменения другим клиентом. Если это не нужно, то надо отключать. Я тут 19541675 спрашивал как это проверяторство по дефолту отключить, никто не подсказал.
Я понимаю в чем тут смысл и это было бы оправдано, если бы у таблицы не был бы уникального ключа по автоинкремененту, но предложение ввести поле timespan вполне себе в духе любиетелей EF, не осиливших реляционную теорию
Теплое с мягким не путай. Повторяю: это надо для контроля содержимого записи, а не для ее поиска. Для реализации оптимистической блокировки .
Пример:
Код: plaintext
1.
2.
3.
4.
Юзер А прочитал поле Text записи с ID = 1
Юзер Б прочитал поле Text записи с ID = 1
Юзер А изменил поле Text и сохранил
Юзер Б изменил поле Text и сохранил
Что стало в поле Text? Нормально ли то что Б затер результат работы А? Понял зачем лабуда?
...
Рейтинг: 0 / 0
Удаление строк из датасет
    #39296183
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cat2Что не так с тета?
а условие чуть сложнее - и приплыли?
...
Рейтинг: 0 / 0
Удаление строк из датасет
    #39296223
Фотография ЕвгенийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИзопропилCat2Что не так с тета?
а условие чуть сложнее - и приплыли?
Если ssms не может - не значит, что более продивинутые инструменты не могут.
Но я все равно не о таком визуальном редакторе.
...
Рейтинг: 0 / 0
Удаление строк из датасет
    #39296244
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
ИзопропилCat2Что не так с тета?
а условие чуть сложнее - и приплыли?
Я не утверждаю что можно совсем обойтись без напильника. Хотя тета - это все же экзотика
...
Рейтинг: 0 / 0
Удаление строк из датасет
    #39296318
Перегонщик перекупки
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cat2Dima Tпропущено...

Смысл лабуды в том что она проверяет что текущее состояние у записи такое же как закэшировано на клиенте, т.е. проверка что между чтением и записью не было изменения другим клиентом. Если это не нужно, то надо отключать. Я тут 19541675 спрашивал как это проверяторство по дефолту отключить, никто не подсказал.
Я понимаю в чем тут смысл (1) и это было бы оправдано, если бы у таблицы не был бы уникального ключа по автоинкремененту , но (2) предложение ввести поле timespan вполне себе в духе любиетелей EF, не осиливших реляционную теорию

1) как это вяжется с optimistic locking?
2) это нормальное предложение, "реляционная теория" тут не причем
...
Рейтинг: 0 / 0
Удаление строк из датасет
    #39296751
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cat2Алексей К,

Вот у этого, автосгененированного, и нормального точно отличаются

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
UPDATE    DgnTest
SET              TypeId = @TypeId, Sort = @Sort, Test = @Test, Description = @Description, P0 = @P0, V0 = @V0, P1 = @P1, V1 = @V1, P2 = @P2, V2 = @V2, P3 = @P3, V3 = @V3, 
                      Result = @Result, ResultText = @ResultText, helpdesk = @helpdesk, helpdesk2 = @helpdesk2, Info = @Info, Func = @Func, Did = @Did, UserInfo = @UserInfo, 
                      Server = @Server, Local = @Local, UserHelpdesk = @UserHelpdesk, Active = @Active, BreefError = @BreefError, Recomendation = @Recomendation, Auto = @Auto, 
                      TestGroup = @TestGroup
WHERE     (TestId = @Original_TestId) AND (TypeId = @Original_TypeId) AND (@IsNull_Sort = 1 AND Sort IS NULL OR
                      Sort = @Original_Sort) AND (@IsNull_Test = 1 AND Test IS NULL OR
                      Test = @Original_Test) AND (@IsNull_Description = 1 AND Description IS NULL OR
                      Description = @Original_Description) AND (@IsNull_P0 = 1 AND P0 IS NULL OR
                      P0 = @Original_P0) AND (@IsNull_V0 = 1 AND V0 IS NULL OR
                      V0 = @Original_V0) AND (@IsNull_P1 = 1 AND P1 IS NULL OR
                      P1 = @Original_P1) AND (@IsNull_V1 = 1 AND V1 IS NULL OR
                      V1 = @Original_V1) AND (@IsNull_P2 = 1 AND P2 IS NULL OR
                      P2 = @Original_P2) AND (@IsNull_V2 = 1 AND V2 IS NULL OR
                      V2 = @Original_V2) AND (@IsNull_P3 = 1 AND P3 IS NULL OR
                      P3 = @Original_P3) AND (@IsNull_V3 = 1 AND V3 IS NULL OR
                      V3 = @Original_V3) AND (Result = @Original_Result) AND (@IsNull_ResultText = 1 AND ResultText IS NULL OR
                      ResultText = @Original_ResultText) AND (@IsNull_helpdesk = 1 AND helpdesk IS NULL OR
                      helpdesk = @Original_helpdesk) AND (@IsNull_helpdesk2 = 1 AND helpdesk2 IS NULL OR
                      helpdesk2 = @Original_helpdesk2) AND (Info = @Original_Info) AND (@IsNull_Func = 1 AND Func IS NULL OR
                      Func = @Original_Func) AND (Did = @Original_Did) AND (UserInfo = @Original_UserInfo) AND (Server = @Original_Server) AND (Local = @Original_Local) AND 
                      (@IsNull_UserHelpdesk = 1 AND UserHelpdesk IS NULL OR
                      UserHelpdesk = @Original_UserHelpdesk) AND (Active = @Original_Active) AND (@IsNull_BreefError = 1 AND BreefError IS NULL OR
                      BreefError = @Original_BreefError) AND (@IsNull_Recomendation = 1 AND Recomendation IS NULL OR
                      Recomendation = @Original_Recomendation) AND (Auto = @Original_Auto) AND (@IsNull_TestGroup = 1 AND TestGroup IS NULL OR
                      TestGroup = @Original_TestGroup)

Как выше было правильно замечено, использовать timestamp для оптимистичной блокировки удобнее, чем применять множество дополнительных сравнений. Но даже при таком раскладе будет [Clustered]IndexSeek по полю TestId (если я правильно понял его назначение), дополнительные условия вряд ли скажутся на статистике выполнения запроса.
...
Рейтинг: 0 / 0
Удаление строк из датасет
    #39296755
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cat2,

Сгенерированный запрос
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
146.
147.
148.
149.
150.
151.
152.
153.
154.
155.
156.
157.
158.
159.
160.
161.
162.
163.
164.
165.
166.
167.
168.
169.
170.
171.
172.
173.
174.
175.
176.
177.
178.
179.
180.
181.
182.
183.
184.
185.
186.
187.
188.
189.
190.
191.
192.
193.
194.
195.
196.
197.
198.
199.
200.
201.
202.
203.
204.
205.
206.
207.
208.
209.
210.
211.
212.
213.
214.
215.
216.
217.
218.
219.
220.
221.
222.
223.
224.
225.
226.
227.
228.
229.
230.
231.
232.
233.
234.
235.
236.
237.
238.
239.
240.
241.
242.
243.
244.
245.
246.
247.
248.
249.
250.
251.
252.
253.
254.
255.
256.
257.
258.
259.
260.
261.
262.
263.
264.
265.
266.
267.
268.
269.
270.
271.
272.
273.
274.
275.
276.
277.
278.
279.
280.
281.
282.
283.
284.
285.
286.
287.
288.
289.
290.
291.
292.
293.
294.
295.
296.
297.
298.
299.
300.
301.
302.
303.
304.
305.
306.
307.
308.
309.
310.
311.
312.
313.
314.
315.
316.
317.
318.
319.
320.
321.
322.
323.
324.
325.
326.
327.
328.
329.
330.
331.
332.
333.
334.
335.
336.
337.
338.
339.
340.
341.
342.
343.
344.
345.
346.
347.
348.
349.
350.
351.
352.
353.
354.
355.
356.
357.
358.
359.
360.
361.
362.
363.
364.
365.
366.
367.
368.
369.
370.
371.
372.
373.
374.
375.
376.
377.
378.
379.
380.
381.
382.
383.
384.
385.
386.
387.
388.
389.
390.
391.
392.
393.
394.
395.
396.
397.
398.
399.
400.
401.
402.
403.
exec sp_executesql N'
SELECT 
    [Limit5].[ID] AS [ID], 
    [Limit5].[Subject] AS [Subject], 
    [Limit5].[Caption1] AS [Caption], 
    [Limit5].[C1] AS [C1], 
    [Limit5].[ID1] AS [ID1], 
    [Limit5].[C2] AS [C2], 
    [Limit5].[C3] AS [C3], 
    [Limit5].[C4] AS [C4], 
    [Limit5].[C5] AS [C5], 
    [Limit5].[IsPrivate] AS [IsPrivate], 
    [Limit5].[CreateDate] AS [CreateDate], 
    [Limit5].[LastChangeDate] AS [LastChangeDate], 
    [Limit5].[ID3] AS [ID2], 
    [Limit5].[C6] AS [C6], 
    [Limit5].[C7] AS [C7], 
    [Limit5].[ID2] AS [ID3], 
    [Limit5].[C8] AS [C8], 
    [Limit5].[C9] AS [C9], 
    [Limit5].[C10] AS [C10], 
    [Limit5].[C11] AS [C11], 
    [Limit5].[RecipientReadDate] AS [RecipientReadDate], 
    [Limit5].[C12] AS [C12], 
    [Limit5].[PlanCompleteDate] AS [PlanCompleteDate], 
    [Limit5].[C13] AS [C13], 
    [Limit5].[Caption] AS [Caption1], 
    [Limit5].[C14] AS [C14], 
    [Limit5].[C15] AS [C15], 
    [Limit5].[C16] AS [C16], 
    [Limit5].[ContentText] AS [ContentText], 
    [Limit5].[C17] AS [C17]
    FROM ( SELECT TOP (1) 
        [Project13].[ID] AS [ID], 
        [Project13].[Subject] AS [Subject], 
        [Project13].[PlanCompleteDate] AS [PlanCompleteDate], 
        [Project13].[RecipientReadDate] AS [RecipientReadDate], 
        [Project13].[CreateDate] AS [CreateDate], 
        [Project13].[LastChangeDate] AS [LastChangeDate], 
        [Project13].[ContentText] AS [ContentText], 
        [Project13].[IsPrivate] AS [IsPrivate], 
        [Project13].[ID2] AS [ID1], 
        [Project13].[ID3] AS [ID2], 
        [Project13].[ID4] AS [ID3], 
        [Project13].[Caption] AS [Caption], 
        [Project13].[Caption1] AS [Caption1], 
        CASE WHEN ([Project13].[SenderPersID] = @p__linq__1) THEN cast(1 as bit) WHEN ([Project13].[SenderPersID] <> @p__linq__1) THEN cast(0 as bit) END AS [C1], 
        [Project13].[LastName] + N'' '' + [Project13].[FirstName] + N'' '' + [Project13].[PatrName] + N'' ('' +  CAST( [Project13].[TabNum] AS nvarchar(max)) + N'')'' AS [C2], 
        CASE WHEN ([Project13].[ID2] = @p__linq__2) THEN cast(1 as bit) WHEN ([Project13].[ID2] <> @p__linq__2) THEN cast(0 as bit) END AS [C3], 
        [Project13].[LastName] + N'' '' + SUBSTRING([Project13].[FirstName], 0 + 1, 1) + SUBSTRING([Project13].[PatrName], 0 + 1, 1) + N'' ('' +  CAST( [Project13].[TabNum] AS nvarchar(max)) + N'')'' AS [C4], 
        CASE WHEN ([Project13].[ID2] = @p__linq__3) THEN cast(1 as bit) WHEN ([Project13].[ID2] <> @p__linq__3) THEN cast(0 as bit) END AS [C5], 
        [Project13].[LastName2] + N'' '' + [Project13].[FirstName2] + N'' '' + [Project13].[PatrName2] + N'' ('' +  CAST( [Project13].[TabNum2] AS nvarchar(max)) + N'')'' AS [C6], 
        CASE WHEN ([Project13].[ID4] = @p__linq__4) THEN cast(1 as bit) WHEN ([Project13].[ID4] <> @p__linq__4) THEN cast(0 as bit) END AS [C7], 
        [Project13].[LastName1] + N'' '' + [Project13].[FirstName1] + N'' '' + [Project13].[PatrName1] + N'' ('' +  CAST( [Project13].[TabNum1] AS nvarchar(max)) + N'')'' AS [C8], 
        CASE WHEN ([Project13].[ID3] = @p__linq__5) THEN cast(1 as bit) WHEN ([Project13].[ID3] <> @p__linq__5) THEN cast(0 as bit) END AS [C9], 
        [Project13].[LastName1] + N'' '' + SUBSTRING([Project13].[FirstName1], 0 + 1, 1) + SUBSTRING([Project13].[PatrName1], 0 + 1, 1) + N'' ('' +  CAST( [Project13].[TabNum1] AS nvarchar(max)) + N'')'' AS [C10], 
        CASE WHEN ([Project13].[ID3] = @p__linq__6) THEN cast(1 as bit) WHEN ([Project13].[ID3] <> @p__linq__6) THEN cast(0 as bit) END AS [C11], 
        CASE WHEN (CASE WHEN (([Project13].[RecipientPersID] = @p__linq__7) AND ([Project13].[SenderPersID] <> @p__linq__8) AND ([Project13].[RecipientReadDate] IS NULL)) THEN cast(1 as bit) WHEN ( NOT (([Project13].[RecipientPersID] = @p__linq__7) AND ([Project13].[SenderPersID] <> @p__linq__8) AND ([Project13].[RecipientReadDate] IS NULL))) THEN cast(0 as bit) END IS NULL) THEN cast(0 as bit) WHEN (([Project13].[RecipientPersID] = @p__linq__7) AND ([Project13].[SenderPersID] <> @p__linq__8) AND ([Project13].[RecipientReadDate] IS NULL)) THEN cast(1 as bit) WHEN ( NOT (([Project13].[RecipientPersID] = @p__linq__7) AND ([Project13].[SenderPersID] <> @p__linq__8) AND ([Project13].[RecipientReadDate] IS NULL))) THEN cast(0 as bit) END AS [C12], 
        CASE WHEN (((CASE WHEN (convert (datetime2, convert(varchar(255), [Project13].[PlanCompleteDate], 102) ,  102) IS NULL) THEN @p__linq__9 ELSE convert (datetime2, convert(varchar(255), [Project13].[PlanCompleteDate], 102) ,  102) END) <= (convert (datetime2, convert(varchar(255), SysDateTime(), 102) ,  102))) AND ([Project13].[RecipientPersID1] IS NOT NULL) AND ([Project13].[IsActive] = 1)) THEN cast(1 as bit) WHEN ( NOT (((CASE WHEN (convert (datetime2, convert(varchar(255), [Project13].[PlanCompleteDate], 102) ,  102) IS NULL) THEN @p__linq__9 ELSE convert (datetime2, convert(varchar(255), [Project13].[PlanCompleteDate], 102) ,  102) END) <= (convert (datetime2, convert(varchar(255), SysDateTime(), 102) ,  102))) AND ([Project13].[RecipientPersID1] IS NOT NULL) AND ([Project13].[IsActive] = 1))) THEN cast(0 as bit) END AS [C13], 
        CASE WHEN (([Project13].[RecipientPersID1] IS NOT NULL) AND ([Project13].[IsActive] = 1)) THEN cast(1 as bit) WHEN ( NOT (([Project13].[RecipientPersID1] IS NOT NULL) AND ([Project13].[IsActive] = 1))) THEN cast(0 as bit) END AS [C14], 
        CASE WHEN ([Project13].[CreateDate2] IS NULL) THEN [Project13].[CreateDate1] ELSE [Project13].[CreateDate3] END AS [C15], 
        CASE WHEN ([Project13].[C1] IS NULL) THEN [Project13].[CreateDate1] ELSE [Project13].[C2] END AS [C16], 
        CASE WHEN ( EXISTS (SELECT 
            1 AS [C1]
            FROM [dbo].[message_attachments] AS [Extent37]
            WHERE [Project13].[ID1] = [Extent37].[MsgID]
        )) THEN cast(1 as bit) ELSE cast(0 as bit) END AS [C17]
        FROM ( SELECT 
            [Project11].[ID] AS [ID], 
            [Project11].[Subject] AS [Subject], 
            [Project11].[PlanCompleteDate] AS [PlanCompleteDate], 
            [Project11].[ID1] AS [ID1], 
            [Project11].[SenderPersID] AS [SenderPersID], 
            [Project11].[RecipientPersID] AS [RecipientPersID], 
            [Project11].[RecipientReadDate] AS [RecipientReadDate], 
            [Project11].[CreateDate] AS [CreateDate], 
            [Project11].[LastChangeDate] AS [LastChangeDate], 
            [Project11].[ContentText] AS [ContentText], 
            [Project11].[IsPrivate] AS [IsPrivate], 
            [Project11].[ID2] AS [ID2], 
            [Project11].[LastName] AS [LastName], 
            [Project11].[FirstName] AS [FirstName], 
            [Project11].[PatrName] AS [PatrName], 
            [Project11].[TabNum] AS [TabNum], 
            [Project11].[ID3] AS [ID3], 
            [Project11].[LastName1] AS [LastName1], 
            [Project11].[FirstName1] AS [FirstName1], 
            [Project11].[PatrName1] AS [PatrName1], 
            [Project11].[TabNum1] AS [TabNum1], 
            [Project11].[ID4] AS [ID4], 
            [Project11].[LastName2] AS [LastName2], 
            [Project11].[FirstName2] AS [FirstName2], 
            [Project11].[PatrName2] AS [PatrName2], 
            [Project11].[TabNum2] AS [TabNum2], 
            [Project11].[Caption] AS [Caption], 
            [Project11].[IsActive] AS [IsActive], 
            [Project11].[Caption1] AS [Caption1], 
            [Project11].[RecipientPersID1] AS [RecipientPersID1], 
            [Project11].[CreateDate1] AS [CreateDate1], 
            [Project11].[CreateDate2] AS [CreateDate2], 
            [Project11].[CreateDate3] AS [CreateDate3], 
            [Project11].[C1] AS [C1], 
            (SELECT 
                MAX([Project12].[CreateDate]) AS [A1]
                FROM ( SELECT 
                    [Extent33].[ID] AS [ID], 
                    [Join28].[ID1] AS [ID1], 
                    [Join28].[CreateDate] AS [CreateDate], 
                    [Join28].[ID2] AS [ID2], 
                    [Join28].[ID3] AS [ID3]
                    FROM  [dbo].[message_comments] AS [Extent33]
                    LEFT OUTER JOIN  (SELECT [Extent34].[ID] AS [ID1], [Extent34].[CreateDate] AS [CreateDate], [Extent35].[ID] AS [ID2], [Extent36].[ID] AS [ID3]
                        FROM   [dbo].[message] AS [Extent34]
                        LEFT OUTER JOIN [dbo].[message_comments] AS [Extent35] ON [Extent34].[ID] = [Extent35].[ID]
                        LEFT OUTER JOIN [dbo].[message_task] AS [Extent36] ON [Extent34].[ID] = [Extent36].[ID] ) AS [Join28] ON [Extent33].[ID] = [Join28].[ID2]
                    WHERE [Project11].[ID] = [Extent33].[TaskID]
                )  AS [Project12]) AS [C2]
            FROM ( SELECT 
                [Project9].[ID] AS [ID], 
                [Project9].[Subject] AS [Subject], 
                [Project9].[PlanCompleteDate] AS [PlanCompleteDate], 
                [Project9].[ID1] AS [ID1], 
                [Project9].[SenderPersID] AS [SenderPersID], 
                [Project9].[RecipientPersID] AS [RecipientPersID], 
                [Project9].[RecipientReadDate] AS [RecipientReadDate], 
                [Project9].[CreateDate] AS [CreateDate], 
                [Project9].[LastChangeDate] AS [LastChangeDate], 
                [Project9].[ContentText] AS [ContentText], 
                [Project9].[IsPrivate] AS [IsPrivate], 
                [Project9].[ID2] AS [ID2], 
                [Project9].[LastName] AS [LastName], 
                [Project9].[FirstName] AS [FirstName], 
                [Project9].[PatrName] AS [PatrName], 
                [Project9].[TabNum] AS [TabNum], 
                [Project9].[ID3] AS [ID3], 
                [Project9].[LastName1] AS [LastName1], 
                [Project9].[FirstName1] AS [FirstName1], 
                [Project9].[PatrName1] AS [PatrName1], 
                [Project9].[TabNum1] AS [TabNum1], 
                [Project9].[ID4] AS [ID4], 
                [Project9].[LastName2] AS [LastName2], 
                [Project9].[FirstName2] AS [FirstName2], 
                [Project9].[PatrName2] AS [PatrName2], 
                [Project9].[TabNum2] AS [TabNum2], 
                [Project9].[Caption] AS [Caption], 
                [Project9].[IsActive] AS [IsActive], 
                [Project9].[Caption1] AS [Caption1], 
                [Project9].[RecipientPersID1] AS [RecipientPersID1], 
                [Project9].[CreateDate1] AS [CreateDate1], 
                [Project9].[CreateDate2] AS [CreateDate2], 
                [Project9].[CreateDate3] AS [CreateDate3], 
                (SELECT 
                    MAX([Project10].[CreateDate]) AS [A1]
                    FROM ( SELECT 
                        [Extent29].[ID] AS [ID], 
                        [Join25].[ID4] AS [ID1], 
                        [Join25].[CreateDate] AS [CreateDate], 
                        [Join25].[ID5] AS [ID2], 
                        [Join25].[ID6] AS [ID3]
                        FROM  [dbo].[message_comments] AS [Extent29]
                        LEFT OUTER JOIN  (SELECT [Extent30].[ID] AS [ID4], [Extent30].[CreateDate] AS [CreateDate], [Extent31].[ID] AS [ID5], [Extent32].[ID] AS [ID6]
                            FROM   [dbo].[message] AS [Extent30]
                            LEFT OUTER JOIN [dbo].[message_comments] AS [Extent31] ON [Extent30].[ID] = [Extent31].[ID]
                            LEFT OUTER JOIN [dbo].[message_task] AS [Extent32] ON [Extent30].[ID] = [Extent32].[ID] ) AS [Join25] ON [Extent29].[ID] = [Join25].[ID5]
                        WHERE [Project9].[ID] = [Extent29].[TaskID]
                    )  AS [Project10]) AS [C1]
                FROM ( SELECT 
                    [Project7].[ID] AS [ID], 
                    [Project7].[Subject] AS [Subject], 
                    [Project7].[PlanCompleteDate] AS [PlanCompleteDate], 
                    [Project7].[ID1] AS [ID1], 
                    [Project7].[SenderPersID] AS [SenderPersID], 
                    [Project7].[RecipientPersID] AS [RecipientPersID], 
                    [Project7].[RecipientReadDate] AS [RecipientReadDate], 
                    [Project7].[CreateDate] AS [CreateDate], 
                    [Project7].[LastChangeDate] AS [LastChangeDate], 
                    [Project7].[ContentText] AS [ContentText], 
                    [Project7].[IsPrivate] AS [IsPrivate], 
                    [Project7].[ID2] AS [ID2], 
                    [Project7].[LastName] AS [LastName], 
                    [Project7].[FirstName] AS [FirstName], 
                    [Project7].[PatrName] AS [PatrName], 
                    [Project7].[TabNum] AS [TabNum], 
                    [Project7].[ID3] AS [ID3], 
                    [Project7].[LastName1] AS [LastName1], 
                    [Project7].[FirstName1] AS [FirstName1], 
                    [Project7].[PatrName1] AS [PatrName1], 
                    [Project7].[TabNum1] AS [TabNum1], 
                    [Project7].[ID4] AS [ID4], 
                    [Project7].[LastName2] AS [LastName2], 
                    [Project7].[FirstName2] AS [FirstName2], 
                    [Project7].[PatrName2] AS [PatrName2], 
                    [Project7].[TabNum2] AS [TabNum2], 
                    [Project7].[Caption] AS [Caption], 
                    [Project7].[IsActive] AS [IsActive], 
                    [Project7].[Caption1] AS [Caption1], 
                    [Project7].[RecipientPersID1] AS [RecipientPersID1], 
                    [Project7].[CreateDate1] AS [CreateDate1], 
                    [Project7].[CreateDate2] AS [CreateDate2], 
                    [Limit4].[ID] AS [ID5], 
                    [Join22].[ID7] AS [ID6], 
                    [Join22].[CreateDate] AS [CreateDate3], 
                    [Join22].[ID8] AS [ID7], 
                    [Join22].[ID9] AS [ID8]
                    FROM    (SELECT 
                        [Project5].[ID] AS [ID], 
                        [Project5].[Subject] AS [Subject], 
                        [Project5].[PlanCompleteDate] AS [PlanCompleteDate], 
                        [Project5].[ID1] AS [ID1], 
                        [Project5].[SenderPersID] AS [SenderPersID], 
                        [Project5].[RecipientPersID] AS [RecipientPersID], 
                        [Project5].[RecipientReadDate] AS [RecipientReadDate], 
                        [Project5].[CreateDate] AS [CreateDate], 
                        [Project5].[LastChangeDate] AS [LastChangeDate], 
                        [Project5].[ContentText] AS [ContentText], 
                        [Project5].[IsPrivate] AS [IsPrivate], 
                        [Project5].[ID2] AS [ID2], 
                        [Project5].[LastName] AS [LastName], 
                        [Project5].[FirstName] AS [FirstName], 
                        [Project5].[PatrName] AS [PatrName], 
                        [Project5].[TabNum] AS [TabNum], 
                        [Project5].[ID3] AS [ID3], 
                        [Project5].[LastName1] AS [LastName1], 
                        [Project5].[FirstName1] AS [FirstName1], 
                        [Project5].[PatrName1] AS [PatrName1], 
                        [Project5].[TabNum1] AS [TabNum1], 
                        [Project5].[ID4] AS [ID4], 
                        [Project5].[LastName2] AS [LastName2], 
                        [Project5].[FirstName2] AS [FirstName2], 
                        [Project5].[PatrName2] AS [PatrName2], 
                        [Project5].[TabNum2] AS [TabNum2], 
                        [Project5].[Caption] AS [Caption], 
                        [Project5].[IsActive] AS [IsActive], 
                        [Project5].[Caption1] AS [Caption1], 
                        [Project5].[RecipientPersID1] AS [RecipientPersID1], 
                        [Project5].[CreateDate1] AS [CreateDate1], 
                        [Limit3].[ID] AS [ID5], 
                        [Join17].[ID10] AS [ID6], 
                        [Join17].[CreateDate] AS [CreateDate2], 
                        [Join17].[ID11] AS [ID7], 
                        [Join17].[ID12] AS [ID8]
                        FROM    (SELECT 
                            [Project3].[ID] AS [ID], 
                            [Project3].[ProjectID] AS [ProjectID], 
                            [Project3].[Subject] AS [Subject], 
                            [Project3].[PlanCompleteDate] AS [PlanCompleteDate], 
                            [Project3].[ID1] AS [ID1], 
                            [Project3].[SenderPersID] AS [SenderPersID], 
                            [Project3].[RecipientPersID] AS [RecipientPersID], 
                            [Project3].[RecipientReadDate] AS [RecipientReadDate], 
                            [Project3].[CreateDate] AS [CreateDate], 
                            [Project3].[LastChangeDate] AS [LastChangeDate], 
                            [Project3].[ContentText] AS [ContentText], 
                            [Project3].[IsPrivate] AS [IsPrivate], 
                            [Project3].[ID2] AS [ID2], 
                            [Project3].[LastName] AS [LastName], 
                            [Project3].[FirstName] AS [FirstName], 
                            [Project3].[PatrName] AS [PatrName], 
                            [Project3].[TabNum] AS [TabNum], 
                            [Project3].[ID3] AS [ID3], 
                            [Project3].[LastName1] AS [LastName1], 
                            [Project3].[FirstName1] AS [FirstName1], 
                            [Project3].[PatrName1] AS [PatrName1], 
                            [Project3].[TabNum1] AS [TabNum1], 
                            [Project3].[ID4] AS [ID4], 
                            [Project3].[LastName2] AS [LastName2], 
                            [Project3].[FirstName2] AS [FirstName2], 
                            [Project3].[PatrName2] AS [PatrName2], 
                            [Project3].[TabNum2] AS [TabNum2], 
                            [Extent12].[Caption] AS [Caption], 
                            [Extent12].[IsActive] AS [IsActive], 
                            [Extent13].[ID] AS [ID5], 
                            [Extent13].[Caption] AS [Caption1], 
                            [Join12].[ID13] AS [ID6], 
                            [Join12].[RecipientPersID] AS [RecipientPersID1], 
                            [Join12].[CreateDate] AS [CreateDate1], 
                            [Join12].[ID14] AS [ID7], 
                            [Join12].[ID15] AS [ID8]
                            FROM      (SELECT 
                                [Project1].[ID] AS [ID], 
                                [Project1].[ProjectID] AS [ProjectID], 
                                [Project1].[Subject] AS [Subject], 
                                [Project1].[PlanCompleteDate] AS [PlanCompleteDate], 
                                [Project1].[ID1] AS [ID1], 
                                [Project1].[SenderPersID] AS [SenderPersID], 
                                [Project1].[RecipientPersID] AS [RecipientPersID], 
                                [Project1].[RecipientReadDate] AS [RecipientReadDate], 
                                [Project1].[CreateDate] AS [CreateDate], 
                                [Project1].[LastChangeDate] AS [LastChangeDate], 
                                [Project1].[ContentText] AS [ContentText], 
                                [Project1].[IsPrivate] AS [IsPrivate], 
                                [Project1].[ID2] AS [ID2], 
                                [Project1].[LastName] AS [LastName], 
                                [Project1].[FirstName] AS [FirstName], 
                                [Project1].[PatrName] AS [PatrName], 
                                [Project1].[TabNum] AS [TabNum], 
                                [Project1].[ID3] AS [ID3], 
                                [Project1].[LastName1] AS [LastName1], 
                                [Project1].[FirstName1] AS [FirstName1], 
                                [Project1].[PatrName1] AS [PatrName1], 
                                [Project1].[TabNum1] AS [TabNum1], 
                                [Project1].[ID4] AS [ID4], 
                                [Project1].[LastName2] AS [LastName2], 
                                [Project1].[FirstName2] AS [FirstName2], 
                                [Project1].[PatrName2] AS [PatrName2], 
                                [Project1].[TabNum2] AS [TabNum2], 
                                [Limit1].[StateID] AS [StateID]
                                FROM   (SELECT 
                                    [Extent1].[ID] AS [ID], 
                                    [Extent1].[ProjectID] AS [ProjectID], 
                                    [Extent1].[Subject] AS [Subject], 
                                    [Extent1].[PlanCompleteDate] AS [PlanCompleteDate], 
                                    [Extent2].[ID] AS [ID1], 
                                    [Extent2].[SenderPersID] AS [SenderPersID], 
                                    [Extent2].[RecipientPersID] AS [RecipientPersID], 
                                    [Extent2].[RecipientReadDate] AS [RecipientReadDate], 
                                    [Extent2].[CreateDate] AS [CreateDate], 
                                    [Extent2].[LastChangeDate] AS [LastChangeDate], 
                                    [Extent2].[ContentText] AS [ContentText], 
                                    [Extent2].[IsPrivate] AS [IsPrivate], 
                                    [Extent3].[ID] AS [ID2], 
                                    [Extent3].[LastName] AS [LastName], 
                                    [Extent3].[FirstName] AS [FirstName], 
                                    [Extent3].[PatrName] AS [PatrName], 
                                    [Extent3].[TabNum] AS [TabNum], 
                                    [Extent4].[ID] AS [ID3], 
                                    [Extent4].[LastName] AS [LastName1], 
                                    [Extent4].[FirstName] AS [FirstName1], 
                                    [Extent4].[PatrName] AS [PatrName1], 
                                    [Extent4].[TabNum] AS [TabNum1], 
                                    [Extent5].[ID] AS [ID4], 
                                    [Extent5].[LastName] AS [LastName2], 
                                    [Extent5].[FirstName] AS [FirstName2], 
                                    [Extent5].[PatrName] AS [PatrName2], 
                                    [Extent5].[TabNum] AS [TabNum2]
                                    FROM     [dbo].[message_task] AS [Extent1]
                                    INNER JOIN [dbo].[message] AS [Extent2] ON [Extent1].[ID] = [Extent2].[ID]
                                    INNER JOIN [dbo].[personal] AS [Extent3] ON [Extent2].[SenderPersID] = [Extent3].[ID]
                                    LEFT OUTER JOIN [dbo].[personal] AS [Extent4] ON [Extent2].[RecipientPersID] = [Extent4].[ID]
                                    LEFT OUTER JOIN [dbo].[personal] AS [Extent5] ON [Extent2].[LastChangePersID] = [Extent5].[ID]
                                    WHERE [Extent1].[ID] = @p__linq__0 ) AS [Project1]
                                OUTER APPLY  (SELECT TOP (1) [Project2].[StateID] AS [StateID]
                                    FROM ( SELECT 
                                        [Extent6].[StateID] AS [StateID], 
                                        [Join5].[CreateDate] AS [CreateDate]
                                        FROM  [dbo].[message_comments] AS [Extent6]
                                        LEFT OUTER JOIN  (SELECT [Extent7].[CreateDate] AS [CreateDate], [Extent8].[ID] AS [ID16]
                                            FROM  [dbo].[message] AS [Extent7]
                                            LEFT OUTER JOIN [dbo].[message_comments] AS [Extent8] ON [Extent7].[ID] = [Extent8].[ID] ) AS [Join5] ON [Extent6].[ID] = [Join5].[ID16]
                                        WHERE ([Project1].[ID] = [Extent6].[TaskID]) AND ([Extent6].[StateID] IS NOT NULL)
                                    )  AS [Project2]
                                    ORDER BY [Project2].[CreateDate] DESC ) AS [Limit1] ) AS [Project3]
                            OUTER APPLY  (SELECT TOP (1) [Project4].[StateID] AS [StateID]
                                FROM ( SELECT 
                                    [Extent9].[StateID] AS [StateID], 
                                    [Join7].[CreateDate] AS [CreateDate]
                                    FROM  [dbo].[message_comments] AS [Extent9]
                                    LEFT OUTER JOIN  (SELECT [Extent10].[CreateDate] AS [CreateDate], [Extent11].[ID] AS [ID17]
                                        FROM  [dbo].[message] AS [Extent10]
                                        LEFT OUTER JOIN [dbo].[message_comments] AS [Extent11] ON [Extent10].[ID] = [Extent11].[ID] ) AS [Join7] ON [Extent9].[ID] = [Join7].[ID17]
                                    WHERE ([Project3].[ID] = [Extent9].[TaskID]) AND ([Extent9].[StateID] IS NOT NULL)
                                )  AS [Project4]
                                ORDER BY [Project4].[CreateDate] DESC ) AS [Limit2]
                            INNER JOIN [dbo].[message_taskStates] AS [Extent12] ON (CASE WHEN ([Project3].[StateID] IS NULL) THEN 1 ELSE [Limit2].[StateID] END) = [Extent12].[ID]
                            LEFT OUTER JOIN [dbo].[projects] AS [Extent13] ON [Project3].[ProjectID] = [Extent13].[ID]
                            LEFT OUTER JOIN  (SELECT [Extent14].[ID] AS [ID13], [Extent14].[RecipientPersID] AS [RecipientPersID], [Extent14].[CreateDate] AS [CreateDate], [Extent15].[ID] AS [ID14], [Extent16].[ID] AS [ID15]
                                FROM   [dbo].[message] AS [Extent14]
                                LEFT OUTER JOIN [dbo].[message_comments] AS [Extent15] ON [Extent14].[ID] = [Extent15].[ID]
                                INNER JOIN [dbo].[message_task] AS [Extent16] ON [Extent14].[ID] = [Extent16].[ID] ) AS [Join12] ON [Project3].[ID] = [Join12].[ID15] ) AS [Project5]
                        OUTER APPLY  (SELECT TOP (1) [Project6].[ID] AS [ID]
                            FROM ( SELECT 
                                [Extent17].[ID] AS [ID], 
                                [Join14].[CreateDate] AS [CreateDate]
                                FROM  [dbo].[message_comments] AS [Extent17]
                                LEFT OUTER JOIN  (SELECT [Extent18].[CreateDate] AS [CreateDate], [Extent19].[ID] AS [ID18]
                                    FROM  [dbo].[message] AS [Extent18]
                                    LEFT OUTER JOIN [dbo].[message_comments] AS [Extent19] ON [Extent18].[ID] = [Extent19].[ID] ) AS [Join14] ON [Extent17].[ID] = [Join14].[ID18]
                                WHERE ([Project5].[ID] = [Extent17].[TaskID]) AND ([Extent17].[StateID] IS NOT NULL)
                            )  AS [Project6]
                            ORDER BY [Project6].[CreateDate] DESC ) AS [Limit3]
                        LEFT OUTER JOIN  (SELECT [Extent20].[ID] AS [ID10], [Extent20].[CreateDate] AS [CreateDate], [Extent21].[ID] AS [ID11], [Extent22].[ID] AS [ID12]
                            FROM   [dbo].[message] AS [Extent20]
                            LEFT OUTER JOIN [dbo].[message_comments] AS [Extent21] ON [Extent20].[ID] = [Extent21].[ID]
                            LEFT OUTER JOIN [dbo].[message_task] AS [Extent22] ON [Extent20].[ID] = [Extent22].[ID] ) AS [Join17] ON [Limit3].[ID] = [Join17].[ID11] ) AS [Project7]
                    OUTER APPLY  (SELECT TOP (1) [Project8].[ID] AS [ID]
                        FROM ( SELECT 
                            [Extent23].[ID] AS [ID], 
                            [Join19].[CreateDate] AS [CreateDate]
                            FROM  [dbo].[message_comments] AS [Extent23]
                            LEFT OUTER JOIN  (SELECT [Extent24].[CreateDate] AS [CreateDate], [Extent25].[ID] AS [ID19]
                                FROM  [dbo].[message] AS [Extent24]
                                LEFT OUTER JOIN [dbo].[message_comments] AS [Extent25] ON [Extent24].[ID] = [Extent25].[ID] ) AS [Join19] ON [Extent23].[ID] = [Join19].[ID19]
                            WHERE ([Project7].[ID] = [Extent23].[TaskID]) AND ([Extent23].[StateID] IS NOT NULL)
                        )  AS [Project8]
                        ORDER BY [Project8].[CreateDate] DESC ) AS [Limit4]
                    LEFT OUTER JOIN  (SELECT [Extent26].[ID] AS [ID7], [Extent26].[CreateDate] AS [CreateDate], [Extent27].[ID] AS [ID8], [Extent28].[ID] AS [ID9]
                        FROM   [dbo].[message] AS [Extent26]
                        LEFT OUTER JOIN [dbo].[message_comments] AS [Extent27] ON [Extent26].[ID] = [Extent27].[ID]
                        LEFT OUTER JOIN [dbo].[message_task] AS [Extent28] ON [Extent26].[ID] = [Extent28].[ID] ) AS [Join22] ON [Limit4].[ID] = [Join22].[ID8]
                )  AS [Project9]
            )  AS [Project11]
        )  AS [Project13]
    )  AS [Limit5]',N'@p__linq__0 int,@p__linq__1 int,@p__linq__2 int,@p__linq__3 int,@p__linq__4 int,@p__linq__5 int,@p__linq__6 int,@p__linq__7 int,@p__linq__8 int,@p__linq__9 datetime2(7)',@p__linq__0=78245,@p__linq__1=3,@p__linq__2=3,@p__linq__3=3,@p__linq__4=3,@p__linq__5=3,@p__linq__6=3,@p__linq__7=3,@p__linq__8=3,@p__linq__9='3000-01-01 00:00:00'

Результаты
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
SQL Server parse and compile time: 
   CPU time = 0 ms, elapsed time = 0 ms.

 SQL Server Execution Times:
   CPU time = 0 ms,  elapsed time = 0 ms.

 SQL Server Execution Times:
   CPU time = 0 ms,  elapsed time = 0 ms.
SQL Server parse and compile time: 
   CPU time = 0 ms, elapsed time = 0 ms.

(1 row(s) affected)
Table 'message_attachments'. Scan count 1, logical reads 2, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
Table 'message'. Scan count 0, logical reads 8, physical reads 0, read-ahead reads 0, lob logical reads 3, lob physical reads 0, lob read-ahead reads 0.
Table 'message_comments'. Scan count 6, logical reads 16, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
Table 'Worktable'. Scan count 0, logical reads 0, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
Table 'message_task'. Scan count 0, logical reads 4, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
Table 'projects'. Scan count 0, logical reads 2, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
Table 'message_taskStates'. Scan count 0, logical reads 2, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
Table 'personal'. Scan count 0, logical reads 4, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.

 SQL Server Execution Times:
   CPU time = 0 ms,  elapsed time = 18 ms.

 SQL Server Execution Times:
   CPU time = 0 ms,  elapsed time = 18 ms.

...
Рейтинг: 0 / 0
64 сообщений из 64, показаны все 3 страниц
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Удаление строк из датасет
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]