powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Ищу ORM для MSSQL поддержка ХП важна
129 сообщений из 129, показаны все 6 страниц
Ищу ORM для MSSQL поддержка ХП важна
    #39758987
yet another noob
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте!
Посоветуйте ORM для работы с MS SQL Server 2014 для WinForms на платформе NET 4.6.2
Особенно интересует, чтобы была поддержка работы с хранимыми процедурами.
Монстров типа EntityFramework или NHibernate не предлагать - нужно что-нибудь попроще.
...
Рейтинг: 0 / 0
Ищу ORM для MSSQL поддержка ХП важна
    #39758994
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Ищу ORM для MSSQL поддержка ХП важна
    #39759004
Дмитрий Мух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Ищу ORM для MSSQL поддержка ХП важна
    #39759021
yet another noob
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо!
А кто-нибудь пробовал работать с Insight.Database ?
Судя по описанию довольно интересная штука - там можно в одну строку передавать в процедуру целые коллекции как параметры (с помощью всего одной переменной типа "Коллекция").
...
Рейтинг: 0 / 0
Ищу ORM для MSSQL поддержка ХП важна
    #39759046
Дмитрий Мух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
yet another noobСпасибо!
А кто-нибудь пробовал работать с Insight.Database ?
Где-то, кто-то, когда-то у нас в проекте использова. Работает, претензий не было.

Берите и пробуйте, не понравится - возьмёте другую.
...
Рейтинг: 0 / 0
Ищу ORM для MSSQL поддержка ХП важна
    #39759049
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий Мухне понравится - возьмёте другую.Простой такой
...
Рейтинг: 0 / 0
Ищу ORM для MSSQL поддержка ХП важна
    #39759056
Дмитрий Мух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.ProДмитрий Мухне понравится - возьмёте другую.Простой такой

Что не так? В баттон кликах работу с БД пропишет так, что потом фиг вырубишь? :)
...
Рейтинг: 0 / 0
Ищу ORM для MSSQL поддержка ХП важна
    #39759057
Дмитрий Мух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хорошо, делается технический спайк на 2-3 дня. По результатам принимается решение.
Технические спайки тоже не просто сделать? :)
...
Рейтинг: 0 / 0
Ищу ORM для MSSQL поддержка ХП важна
    #39759060
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да за два-три дня разве что-то глобальное можно разглядеть.

А когда через месяц поймешь, что либа не очень тебе подходит или не очень удобна или тормозит разработку, потом дофига чего переписывать понадобится
...
Рейтинг: 0 / 0
Ищу ORM для MSSQL поддержка ХП важна
    #39759062
Дмитрий Мух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.ProДа за два-три дня разве что-то глобальное можно разглядеть.
Глобальное? Что есть глобальное?

В стартовом посте топика следующие требования: "MS SQL Server 2014 для WinForms на платформе NET 4.6.2... чтобы была поддержка работы с хранимыми процедурами"

Это за час проверяется. А два-три дня на то, чтобы более детально попробовать под нужды своего проекта и принять решение.
Если остаётся обоснованный риск, что "через месяц поймешь, что либа не очень тебе подходит или не очень удобна или тормозит разработку, потом дофига чего переписывать понадобится", дак не бери.
Ищи что-то другое.
...
Рейтинг: 0 / 0
Ищу ORM для MSSQL поддержка ХП важна
    #39759064
Дмитрий Мух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну и писать код надо так, чтобы либу можно было относительно легко заменить.
...
Рейтинг: 0 / 0
Ищу ORM для MSSQL поддержка ХП важна
    #39759106
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
yet another noobМонстров типа EntityFramework или NHibernate не предлагать - нужно что-нибудь попроще.
а смысл "проще" ?
...
Рейтинг: 0 / 0
Ищу ORM для MSSQL поддержка ХП важна
    #39759136
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
yet another noobОсобенно интересует, чтобы была поддержка работы с хранимыми процедурами.

Не знаю ORM, которые бы этого не позволяли.

yet another noobМонстров типа EntityFramework или NHibernate не предлагать - нужно что-нибудь попроще.

Учитывая, что "монстры" типа EF и NH как раз таки существенно упрощают работу с БД , вы что имеете в виду под "что-нибудь по-проще"? В каком ракурсе на эту фразу смотреть?

В общем, нужно больше информации, чего вы вообще хотите от ORM, для чего она вообще вам, как вы с ней работать собираетесь и т.д.

А то, нормальный ответ, это: ADO.NET, и пишите чё хотите.
...
Рейтинг: 0 / 0
Ищу ORM для MSSQL поддержка ХП важна
    #39759137
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Изопропилyet another noobМонстров типа EntityFramework или NHibernate не предлагать - нужно что-нибудь попроще.
а смысл "проще" ?

Смысл: мне лень объяснять, вы ж тут все телепаты 80-го уровня.
...
Рейтинг: 0 / 0
Ищу ORM для MSSQL поддержка ХП важна
    #39759169
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
yet another noob,
По умолчанию, либо ОРМ либо хранимки.
Так как ОРМ работает непосредственно с таблицами.
Поэтому хорошо подумайте.
...
Рейтинг: 0 / 0
Ищу ORM для MSSQL поддержка ХП важна
    #39759206
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123По умолчанию, либо ОРМ либо хранимки.

С чего это? МНогие ORM умеют CRUD мапить на хранимки.
...
Рейтинг: 0 / 0
Ищу ORM для MSSQL поддержка ХП важна
    #39759225
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttPetro123По умолчанию, либо ОРМ либо хранимки.

С чего это? МНогие ORM умеют CRUD мапить на хранимки.но весь проект на этом строить странно.
Это как рядом брать ошибку из триггера.
Можно, но некрасиво технически.
Т.е. Хранимка "добавить новый документ" при ОРМ будет в сервисном слое.
...
Рейтинг: 0 / 0
Ищу ORM для MSSQL поддержка ХП важна
    #39759720
256k
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123yet another noob,
По умолчанию, либо ОРМ либо хранимки.
Так как ОРМ работает непосредственно с таблицами.
Поэтому хорошо подумайте.

собственно, работа с базой и есть в конце концов работа с таблицами.

"либо ОРМ либо хранимки" - жесткое заявление.... пугает, и даже не пропущенной запятой
...
Рейтинг: 0 / 0
Ищу ORM для MSSQL поддержка ХП важна
    #39759722
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
256k,
По делу что есть? Проснулся.
...
Рейтинг: 0 / 0
Ищу ORM для MSSQL поддержка ХП важна
    #39759726
256k
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123256k,
По делу что есть? Проснулся.

С наступившим, всех благ!
...
Рейтинг: 0 / 0
Ищу ORM для MSSQL поддержка ХП важна
    #39759786
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123но весь проект на этом строить странно.

На самом деле нет, речь идёт о том, что любая изменяющая операция в БД -- вызов соответствующей хранимки. Такой подход допустим (хотя мною однозначно не приветствуется), но только если все 100% изменений через хранимки.
...
Рейтинг: 0 / 0
Ищу ORM для MSSQL поддержка ХП важна
    #39759813
256k
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttPetro123но весь проект на этом строить странно.

На самом деле нет, речь идёт о том, что любая изменяющая операция в БД -- вызов соответствующей хранимки. Такой подход допустим (хотя мною однозначно не приветствуется), но только если все 100% изменений через хранимки.

В общем согласен, но всё относительно, есть простые операции, а есть те, которые проще сделать процедурой с параметрами.
Я сторонник процедур почти везде и всегда, как минимум - они облегчают отлов багов, их лечение и т.д.
...
Рейтинг: 0 / 0
Ищу ORM для MSSQL поддержка ХП важна
    #39759838
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
256kЯ сторонник процедур почти везде и всегда, как минимум - они облегчают отлов багов, их лечение и т.д.

Не могу с этим согласиться. То, что усложняют жизнь, требуют размазать логику по двум системам -- да, но не наоборот :)
...
Рейтинг: 0 / 0
Ищу ORM для MSSQL поддержка ХП важна
    #39759866
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt,
Будет двухзвенка.
...
Рейтинг: 0 / 0
Ищу ORM для MSSQL поддержка ХП важна
    #39759867
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttТакой подход допустим (хотя мною однозначно не приветствуется)ну и мной приветствуется без орм в двухзвенке.
Тогда не будем по это)
...
Рейтинг: 0 / 0
Ищу ORM для MSSQL поддержка ХП важна
    #39759906
ВМоисеев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>yet another noob, 13 янв 19, 16:19 https://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1307687&msg=21784059][21784059]

>Особенно интересует, чтобы была поддержка работы с хранимыми процедурами.
<С ХП работаю так, пример (выборка формируется в List lst_Entity):
Код: 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.
27.
28.
29.
30.
31.
32.
33.
    //-- SELECT 
    //====================================================================================
    public async void ЗапросДанных() {
      if (!bl_Разрешение) return; //-- Блокировано выполнение функционала компонент

      bl_Разрешение = false;

      //-- Готовим параметры фильтра запроса выборки
      string xstr = tbx_Запрос.Text.Trim();
      xstr = (xstr == "") ? "" : xstr += "%";
      xrow = null; lst_Entity = null; lst_Entity = new List<row_Entity>();

      //-- Собственно вызов ХП
      object[][] psp = new object[2][];
      psp[0] = new object[2] { "@pk_Entity", pk_Guid };
      psp[1] = new object[2] { "@str_Отдел", xstr };
      при.tmrStart(); await Task.Run(() => wsp.Entity_SP("au_Отделы_Sel", wsp.sp_Sel, psp, RowToEntity)); при.tmrStop();
      
      bl_Разрешение = true;     //-- Разрешение выполнения функционала компонент

      //-- Обработка не штатной ситуации
      if (wsp.wspErr != null) { MessageBox.Show(wsp.wspErr, caption_Entity, MessageBoxButton.OK); }

      //-- Формирование выборки в DataGrid
      dgv_Entity.ItemsSource = null;
      if (lst_Entity != null) {
        oc_Entity = new ObservableCollection<row_Entity>(lst_Entity); lst_Entity = null;
        dgv_Entity.ItemsSource = oc_Entity;
        //-- Флаг размера выборки
        lbl_ФРВ.Visibility = wsp.bMax ? Visibility.Visible : Visibility.Hidden;
        if (oc_Entity.Count != 0) dgv_Entity.SelectedIndex = 0;
      }
    }
...
Рейтинг: 0 / 0
Ищу ORM для MSSQL поддержка ХП важна
    #39759921
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВМоисеев,
Дак у тебя нету ОРМ AFAIK.
...
Рейтинг: 0 / 0
Ищу ORM для MSSQL поддержка ХП важна
    #39759966
ВМоисеев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>Petro123, сегодня, 17:38 https://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1307687&msg=21785980][21785980]
>Дак у тебя нету…
<Так ему шашечки или ехать?
...
Рейтинг: 0 / 0
Ищу ORM для MSSQL поддержка ХП важна
    #39759968
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВМоисеев,

Или орм или хп.
...
Рейтинг: 0 / 0
Ищу ORM для MSSQL поддержка ХП важна
    #39759970
256k
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123ВМоисеев,

Или орм или хп.

П. имхую, что это излишняя категоричность (я так понял, "хп" - хранимая процедура, а не то, о чем все могли подумать)
...
Рейтинг: 0 / 0
Ищу ORM для MSSQL поддержка ХП важна
    #39759979
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
256k,
Расскажи всем, что ты там подумал... Как понял.. И что ел на завтрак.
...
Рейтинг: 0 / 0
Ищу ORM для MSSQL поддержка ХП важна
    #39760001
ВМоисеев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>Petro123, сегодня, 18:54 https://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1307687&msg=21786066][21786066]
>Или орм или хп.
<Не хочется втягиваться в обсуждение этого тезиса.
Если ОРМ - прослойка(см. хотя бы здесь - Что такое ORM?), то компактный и быстрый ОРМ у меня существует - класс wsp. Коды вариантов прослойки приводил ранее. Можно и повторить.
...
Рейтинг: 0 / 0
Ищу ORM для MSSQL поддержка ХП важна
    #39760011
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВМоисеев,
Ты написал свой ОРМ?
Поздравляю.
...
Рейтинг: 0 / 0
Ищу ORM для MSSQL поддержка ХП важна
    #39760038
ВМоисеев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>Petro123, сегодня, 21:25 https://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1307687&msg=21786200][21786200]
>Ты написал свой ОРМ?
<Я написал то, что нужно для текущих задач.
...
Рейтинг: 0 / 0
Ищу ORM для MSSQL поддержка ХП важна
    #39760054
Дмитрий Мух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВМоисеев>Petro123, сегодня, 21:25 https://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1307687&msg=21786200][21786200]
>Ты написал свой ОРМ?
<Я написал то, что нужно для текущих задач.
Энтропия растёт...
...
Рейтинг: 0 / 0
Ищу ORM для MSSQL поддержка ХП важна
    #39760068
ВМоисеев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>Дмитрий Мух, сегодня, 00:03 https://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1307687&msg=21786297][21786297]
>Энтропия растёт...
<Думаю иначе - для двухзвенок с ХП растёт порядок и удаляется лишнее
...
Рейтинг: 0 / 0
Ищу ORM для MSSQL поддержка ХП важна
    #39760086
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВМоисеев>Дмитрий Мух, сегодня, 00:03 https://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1307687&msg=21786297][21786297]
>Энтропия растёт...
<Думаю иначе - для двухзвенок с ХП растёт порядок и удаляется лишнее
И в скольки двухзвенках уже используется?
...
Рейтинг: 0 / 0
Ищу ORM для MSSQL поддержка ХП важна
    #39760087
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВМоисеев,

я могу взять этот ваш wsp и использовать у себя в проекте? А ТС?
...
Рейтинг: 0 / 0
Ищу ORM для MSSQL поддержка ХП важна
    #39760090
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВМоисеевДумаю иначе - для двухзвенок с ХП растёт порядок и удаляется лишнееизлагай мысли яснее.
Скажи что ОРМ не писал и автору не советуешь.
Удачи!
...
Рейтинг: 0 / 0
Ищу ORM для MSSQL поддержка ХП важна
    #39760165
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВМоисеев
Код: c#
1.
при.tmrStart(); await Task.Run(() => wsp.Entity_SP("au_Отделы_Sel", wsp.sp_Sel, psp, RowToEntity)); при.tmrStop();



продолжает доставлять, как не разобравшись в теме, люди пихают Task.Run, для async/await -- абсолютно бессмысленное, по сути деструктивное действие.

)))
...
Рейтинг: 0 / 0
Ищу ORM для MSSQL поддержка ХП важна
    #39760232
Парамон
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВМоисеев
Код: c#
1.
 при.tmrStart(); await Task.Run(() => wsp.Entity_SP("au_Отделы_Sel", wsp.sp_Sel, psp, RowToEntity)); при.tmrStop();



Асинк, походу должен экономить потоки, а тут отжимается поток из пула.
Если пул начнет создавать новые потоки, получим просад и блокировки.
Тот, кто вызывает этот метод, возможно не подозревает, что там забрали поток.
По сути не хорошо распарралеливать под видом асинхронности.
...
Рейтинг: 0 / 0
Ищу ORM для MSSQL поддержка ХП важна
    #39760249
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Парамон,
Он уже как то хвалился этим кодом. Обсуждали 10 страниц, а "воз и ныне там".
...
Рейтинг: 0 / 0
Ищу ORM для MSSQL поддержка ХП важна
    #39760254
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ПарамонАсинк, походу должен экономить потоки, а тут отжимается поток из пула.

всё верно, отжимается поток и добавляются совершенно ненужные накладные расходы, к тому же для оборачивания синхронного кода в асинхронный, нужно использовать TaskCompletionSource, а вот такой код -- это обычное тупое непонимание происходящего, нежелание разбираться, быдло кодинг во всей красе.
...
Рейтинг: 0 / 0
Ищу ORM для MSSQL поддержка ХП важна
    #39760267
256k
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123256k,
Расскажи всем, что ты там подумал... Как понял.. И что ел на завтрак.

П., не занимайся глупостями и спамом.
...
Рейтинг: 0 / 0
Ищу ORM для MSSQL поддержка ХП важна
    #39760485
ВМоисеев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>Парамон, сегодня, 12:49 https://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1307687&msg=21786621][21786621]
>...По сути не хорошо распарралеливать под видом асинхронности.
<Есть тонкости.
1. Какие операции распараллеливаются - обмен или цифромолка
2. И моя ситуация, пример:
Код: c#
1.
2.
3.
4.
5.
6.
7.
. . . 
object[][] psp = new object[3][];
psp[0] = new object[2] { "x_nazvanie", xstr };
psp[1] = new object[2] { "x_dt_begin", (DateTime)dpr_Начало.SelectedDate };
psp[2] = new object[2] { "x_dt_end", (DateTime)dpr_Конец.SelectedDate };
при.tmrStart(); await Task.Run(() => wsp.Entity_SP("NCUYAO_GIS.VD_Inspek_Sel", wsp.sp_Sel, psp, RowToEntity)); при.tmrStop(); 
. . .


После выполнения при.tmrStart() начинает асинхронно выполняться метод класса, что занимается прогрессбаром. Выполняю await Task.Run(() => … Полоса прогрессбара двигается. По завершению метода wsp.Entity_SP (вызов ХП) выполняется при.tmrStop().

Если так
при.tmrStart(); await wsp.Entity_SP("NCUYAO_GIS.VD_Inspek_Sel", wsp.sp_Sel, psp, RowToEntity)); при.tmrStop();
то прогрессбар не работает.
Это верно для Oracle 8.17 и провайдера dotConnect for Oracle (dcoraclefree_9.6.597.exe).

Работаю и в Oracle и MSSQL, часто применяю COPY-PASTE, поэтому имею, что имею

Если работать только в MSSQL то можно (нужно) и так await wsp.Entity_SP.
...
Рейтинг: 0 / 0
Ищу ORM для MSSQL поддержка ХП важна
    #39760488
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВМоисеев,
Лучше ссылки давай
C# async... await
...
Рейтинг: 0 / 0
Ищу ORM для MSSQL поддержка ХП важна
    #39761176
ВМоисеев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>Petro123, вчера, 13:08 https://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1307687&msg=21786659][21786659]
>...а "воз и ныне там".
<Ответить или послать … Решил ответить.
Итак, имею хранилище приложений. Состав:
1. сервер данных (MSSQL) с информацией по пользователям и приложениям.
2. файловый сервер для хранения .rar контейнеров приложений.
3. одно из приложений работает с информацией сервера данных хранилища. Размер контейнера приложения 64К байт .
Контейнеры всех нужных приложений пересылаются на рабочую станцию разово, после изменений и здесь кешируются.
Приложения работают с серверами данных и файловыми серверами напрямую (двухзвенка).

База данных состоит из 7 таблиц и 28 ХП с гаком. Операции - выборка, новая запись, удалить, сохранить и подстановка из справочника. Пример на слайде. Нужно закрепить пользователя за приложением:
Вызываем панель Приложения-Пользователи и хотим заменить Приложение подстановкой из справочника доступных приложения - двойной клик на соответствующим поле строки грида. Вызывается панель справочника Приложений. Если есть полномочия, то можно справочник корректировать, либо просто выбрать подстановку. Выбираем коррекцию поля Серверы данных двойным кликом на нем. Подгружаем справочник серверов данных. Справочник может быть большим - можно активировать фильтр.
...
Рейтинг: 0 / 0
Ищу ORM для MSSQL поддержка ХП важна
    #39761233
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВМоисеев,
Зачем ЧУЖОЙ топик засирать?
Клиентское приложение
...
Рейтинг: 0 / 0
Ищу ORM для MSSQL поддержка ХП важна
    #39761871
ВМоисеев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>Petro123, вчера, 07:22 https://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1307687&msg=21788421][21788421]
>Зачем ЧУЖОЙ топик засирать?
< yet another noob просил Монстров ... не предлагать - нужно что-нибудь попроще.
hVostt … "монстры" типа EF и NH как раз таки существенно упрощают работу с БД.
Я с этим тезисом не согласен. Вы же меня "всё обидеть норовите". Но кто бы там, чего бы там - караван идет.
В качестве примера показываю функционал приложения и объём реализации его бинарной формы.
В отличии от этого мне не на что ссылаться - показываю как есть у меня в реальности.

Реализация этого приложения "тянет" на 65К байт в .rar контейнере и 392К байт в папке приложения. Приложение работает с ХП.
...
Рейтинг: 0 / 0
Ищу ORM для MSSQL поддержка ХП важна
    #39761897
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВМоисеев,
Ну, если тебе не доходит тема: "Ищу ОРМ". Твои проблемы.
Пости хоть 20 раз свои картинки где ОРМ нет.
Мне, и я вижу остальным, по барабану.
...
Рейтинг: 0 / 0
Ищу ORM для MSSQL поддержка ХП важна
    #39761926
ВМоисеев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>Petro123, сегодня, 20:40 https://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1307687&msg=21789371][21789371]
>Ну, если тебе не доходит тема: "Ищу ОРМ"... Мне, и я вижу остальным, по барабану.
<Если ты с придыханием... "Ищет ОРМ", то для меня - ищет прослойку с необходимым функционалом.
Повторяю, вот здесь открой ссылку и посмотри раздел API Examples . У меня это всё реализовано для работы с ХП. Только мне не надо в клиентском приложении создавать постоянные таблицы, временные по нужде создаются в рамках ХП. Мне не надо писать на клиенте реализацию SELECT, INSERT, UPDATE, DELETE - это всё реализовано в ХП и только в одном экземпляре.
Относительно остальных - каждому своё. Только не вижу примеров реализации функционала, подобного примеру и нет соответствующих цифирь.
...
Рейтинг: 0 / 0
Ищу ORM для MSSQL поддержка ХП важна
    #39761989
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВМоисеев,
Вам всем, таким вот пейсателям пенсионерам, не хватает мужества написать одну фразу:
"Я весь функционал ОРМ реализовал самостоятельно".
Но выжевархитектуреничегонепонимаете.
Удачи!
...
Рейтинг: 0 / 0
Ищу ORM для MSSQL поддержка ХП важна
    #39761990
Дмитрий Мух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВМоисеев>Petro123, сегодня, 20:40 https://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1307687&msg=21789371][21789371]
>Ну, если тебе не доходит тема: "Ищу ОРМ"... Мне, и я вижу остальным, по барабану.
<Если ты с придыханием... "Ищет ОРМ", то для меня - ищет прослойку с необходимым функционалом.
Повторяю, вот здесь открой ссылку и посмотри раздел API Examples . У меня это всё реализовано для работы с ХП. Только мне не надо в клиентском приложении создавать постоянные таблицы, временные по нужде создаются в рамках ХП. Мне не надо писать на клиенте реализацию SELECT, INSERT, UPDATE, DELETE - это всё реализовано в ХП и только в одном экземпляре.
Относительно остальных - каждому своё. Только не вижу примеров реализации функционала, подобного примеру и нет соответствующих цифирь.
Топик называется "Ищу ORM для MSSQL поддержка ХП важна".
У вас не ORM, у вас обёртка над ADO.NET под свои нужды. Такие каждый писал до появления готовых библиотек.
Да и продолжают писать.

Вы этим предлагаете заняться ТСу? Или что?
...
Рейтинг: 0 / 0
Ищу ORM для MSSQL поддержка ХП важна
    #39762004
ВМоисеев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>Дмитрий Мух, сегодня, 11:36 https://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1307687&msg=21789541][21789541]
>… Вы этим предлагаете заняться ТСу?...
<Чем будет заниматься ТС - его личное дело. Я предлагаю альтернативный вариант. Осознанный выбор за ним, но он должен видеть альтернативные варианты.
>Теперь по сути - … У вас не ORM, у вас обёртка над ADO.NET под свои нужды...
<Дайте определение ORM, определите его базовый функционал.
Или Вас коробит от такой записи SELECT:
Код: c#
1.
2.
3.
4.
5.
      object[][] psp = new object[3][];
      psp[0] = new object[2] { "x_nazvanie", xstr };
      psp[1] = new object[2] { "x_dt_begin", (DateTime)dpr_Начало.SelectedDate };
      psp[2] = new object[2] { "x_dt_end", (DateTime)dpr_Конец.SelectedDate };
      при.tmrStart(); await Task.Run(() => wsp.Entity_SP("NCUYAO_GIS.VD_Inspek_Sel", wsp.sp_Sel, psp, RowToEntity)); при.tmrStop();


и записью выборки сущностей в List или ObservableCollection и предпочитаете такую :
Код: c#
1.
2.
3.
int agesAgo = DateTime.Today.AddYears(-20).Year;
db.Select<Author>(x => x.Birthday >= new DateTime(agesAgo, 1, 1) 
                    && x.Birthday <= new DateTime(agesAgo, 12, 31));


>...Такие каждый писал до появления готовых библиотек…
<Он может найти подходящую ORM, написать свою прослойку или взять мою и допилить до своих нужд.
...
Рейтинг: 0 / 0
Ищу ORM для MSSQL поддержка ХП важна
    #39762010
Дмитрий Мух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВМоисеевДайте определение ORM, определите его базовый функционал.
Общепринятое определение Вас устроит?

Object-relational mapping (ORM) in computer science is a programming technique for converting data between incompatible type systems using object-oriented programming languages.
...
Рейтинг: 0 / 0
Ищу ORM для MSSQL поддержка ХП важна
    #39762011
Дмитрий Мух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВМоисеевИли Вас коробит от такой записи SELECT:
Код: c#
1.
2.
3.
4.
5.
      object[][] psp = new object[3][];
      psp[0] = new object[2] { "x_nazvanie", xstr };
      psp[1] = new object[2] { "x_dt_begin", (DateTime)dpr_Начало.SelectedDate };
      psp[2] = new object[2] { "x_dt_end", (DateTime)dpr_Конец.SelectedDate };
      при.tmrStart(); await Task.Run(() => wsp.Entity_SP("NCUYAO_GIS.VD_Inspek_Sel", wsp.sp_Sel, psp, RowToEntity)); при.tmrStop();


Меня не коробит от того, что кто-то SELECT-ы пишет в хранимых процедурах.
Лично я тоже пишё SELECT-ы в хранимых процедурах.

А вот как Вы оформили вызов хранимой процедуры, от этого да, немного коробит.
...
Рейтинг: 0 / 0
Ищу ORM для MSSQL поддержка ХП важна
    #39762012
Дмитрий Мух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВМоисееви записью выборки сущностей в List или ObservableCollection и предпочитаете такую :
Код: c#
1.
2.
3.
int agesAgo = DateTime.Today.AddYears(-20).Year;
db.Select<Author>(x => x.Birthday >= new DateTime(agesAgo, 1, 1) 
                    && x.Birthday <= new DateTime(agesAgo, 12, 31));


Какую такую? И что значит предпочитаю? И как это связано с выбором ORM?
...
Рейтинг: 0 / 0
Ищу ORM для MSSQL поддержка ХП важна
    #39762013
Дмитрий Мух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВМоисеев>...Такие каждый писал до появления готовых библиотек…
<Он может найти подходящую ORM, написать свою прослойку или взять мою и допилить до своих нужд.
И как же ему взять Вашу прослойку и допилить под свои нужды?

Человеку нужно готовое и простое. А не фиг знает что и допиливать.
...
Рейтинг: 0 / 0
Ищу ORM для MSSQL поддержка ХП важна
    #39762029
ВМоисеев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>Дмитрий Мух, сегодня, 12:55 https://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1307687&msg=21789582][21789582]
>...Человеку нужно готовое и простое. А не фиг знает что и допиливать…
Я не только SELECT, но и INSERT, UPDATE и DELETE реализую в ХП. И тут появляются нюансы - они все могут вернуть сущность, а нужно ли это ТС? Обстоятельства могут поставить его в нужную позу и тем не менее - пример:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
ALTER PROCEDURE [dbo].[au_Группы_Ins] 
  @pk_Entity uniqueidentifier
AS
  BEGIN
	SET NOCOUNT OFF;
    INSERT INTO dbo.tbl_Группы(pk_Entity) VALUES(@pk_Entity);
    SELECT pk_Entity,str_Группа,ts_Entity
    FROM tbl_Группы
    WHERE (pk_Entity=@pk_Entity);
  END
 



< Общепринятое определение Вас устроит? Устроит. Назови хоть горшком, а делает то он что, каков функционал?
...
Рейтинг: 0 / 0
Ищу ORM для MSSQL поддержка ХП важна
    #39762037
Дмитрий Мух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВМоисеев Общепринятое определение Вас устроит? Устроит. Назови хоть горшком, а делает то он что, каков функционал?
Читайте: https://en.wikipedia.org/wiki/Object-relational_mapping

Информация открыта.
...
Рейтинг: 0 / 0
Ищу ORM для MSSQL поддержка ХП важна
    #39762039
Дмитрий Мух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВМоисеевЯ не только SELECT, но и INSERT, UPDATE и DELETE реализую в ХП.
Мы в курсе, Вы это уже писали и не раз.
ВМоисеевИ тут появляются нюансы - они все могут вернуть сущность, а нужно ли это ТС?
Ещё раз задам вопрос: "И как же ему взять Вашу прослойку и допилить под свои нужды?"
...
Рейтинг: 0 / 0
Ищу ORM для MSSQL поддержка ХП важна
    #39762052
ВМоисеев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>Дмитрий Мух, сегодня, 14:01 https://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1307687&msg=21789624][21789624]
>Читайте:...
<Смотрите:
Код: 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.
    //-- Сущность, что ассоциируется с выборкой из базы данных
    public class row_Entity {
      public row_Entity(bool _chb_Entity, Guid _pk_Entity, string _str_Группа, byte[] _ts_Entity) {
        this.chb_Entity = _chb_Entity;
        this.pk_Entity  = _pk_Entity;
        this.str_Группа = _str_Группа;
        this.ts_Entity  = _ts_Entity;
      }
      public row_Entity() { }
      public bool chb_Entity { get; set; }
      public Guid pk_Entity { get; set; }
      public string str_Группа { get; set; }
      public byte[] ts_Entity { get; set; }
    }
    . . . 
    //-- Строку выборки отражаем на сущность 
    private void RowToEntity(IDataRecord record) {
      xrow = new row_Entity() {
        chb_Entity = false,
        pk_Entity = (record.IsDBNull(0)) ? гп.gd_0 : (Guid)record.GetGuid(0),
        str_Группа = (record.IsDBNull(1)) ? "???" : ((string)record.GetString(1)).Trim(),
        ts_Entity = (record.IsDBNull(2)) ? null : (byte[])record.GetValue(2)
      };  
      lst_Entity?.Add(xrow);
    }
...
Рейтинг: 0 / 0
Ищу ORM для MSSQL поддержка ХП важна
    #39762053
Дмитрий Мух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВМоисеев<Смотрите:
Код: 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.
    //-- Сущность, что ассоциируется с выборкой из базы данных
    public class row_Entity {
      public row_Entity(bool _chb_Entity, Guid _pk_Entity, string _str_Группа, byte[] _ts_Entity) {
        this.chb_Entity = _chb_Entity;
        this.pk_Entity  = _pk_Entity;
        this.str_Группа = _str_Группа;
        this.ts_Entity  = _ts_Entity;
      }
      public row_Entity() { }
      public bool chb_Entity { get; set; }
      public Guid pk_Entity { get; set; }
      public string str_Группа { get; set; }
      public byte[] ts_Entity { get; set; }
    }
    . . . 
    //-- Строку выборки отражаем на сущность 
    private void RowToEntity(IDataRecord record) {
      xrow = new row_Entity() {
        chb_Entity = false,
        pk_Entity = (record.IsDBNull(0)) ? гп.gd_0 : (Guid)record.GetGuid(0),
        str_Группа = (record.IsDBNull(1)) ? "???" : ((string)record.GetString(1)).Trim(),
        ts_Entity = (record.IsDBNull(2)) ? null : (byte[])record.GetValue(2)
      };  
      lst_Entity?.Add(xrow);
    }


Вы это не раз уже показывали, чего тут смотреть-то?

Вы лучше на вопрос дайте уже ответ: "И как же ему взять Вашу прослойку и допилить под свои нужды?"
...
Рейтинг: 0 / 0
Ищу ORM для MSSQL поддержка ХП важна
    #39762056
ВМоисеев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>Дмитрий Мух, сегодня, 14:02 https://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1307687&msg=21789626][21789626]
>Ещё раз задам вопрос:...
<Так это не секрет, я Вам уже показывал, повторяю:
Код: 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.
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.
using System;
using System.Data.SqlClient;
using System.Data;

namespace ns_Хранилище {
  public delegate void dlg_sp(dlg_RowToEntity RowToEntity);
  public delegate void dlg_RowToEntity(IDataRecord reader);

  public static class wsp {
    public static int nRow;
    static SqlDataReader reader;
    public static string wspErr;
    public static bool bMax;

    //-- Обработка строк выборки select
    public static void sp_Sel(dlg_RowToEntity RowToEntity) {
      try {
        while (reader.Read()) {
          nRow++;
          if (nRow == гп.max_Выборка) { bMax = true; break; }   //-- Это максимум что можем отобразить, надо уточнять запрос
          RowToEntity(reader);
        }
      }
      catch (System.InvalidOperationException ex) { wspErr = ex.Message; return; }
      catch (Exception ex) { wspErr = ex.Message; }
    }

    //-- Обработка строки выборки insert
    public static void sp_Ins(dlg_RowToEntity RowToEntity) {
      try { if (reader.Read()) RowToEntity?.Invoke(reader); else wspErr = "Не читаются изменения"; }
      catch (System.InvalidOperationException ex) { wspErr = ex.Message; return; }
      catch (Exception ex) { wspErr = ex.Message;}
    }

    //-- Обработка строки выборки update
    public static void sp_Upd(dlg_RowToEntity RowToEntity) {
      int i = 0;
      try {
        if (reader.Read()) {
          i = reader.FieldCount;
          i = (int)reader.GetInt32(i - 1);
          RowToEntity(reader);
          if (i != 1) wspErr = "Запись кем то изменена";
        }
        else wspErr = "Не читаются изменения";
      }
      catch (System.InvalidOperationException ex) { wspErr = ex.Message; return; }
      catch (Exception ex) { wspErr = ex.Message; }
    }

    //-- Обработка строки выборки delete
    public static void sp_Del(dlg_RowToEntity RowToEntity) {
      try {
        if (reader.Read()) {
          //-- Если читаем якобы удаленную строку, то удаления нет
          RowToEntity(reader);
          wspErr = "Запись кем то изменена";
        }
      }
      catch (System.InvalidOperationException ex) { wspErr = ex.Message; return; }
      catch (Exception ex) { wspErr = ex.Message; }
    }

    //-- Выполнение хранимой процедуры
    public static void Entity_SP(string spname, dlg_sp sp, object[][] psp, dlg_RowToEntity RowToEntity) {
      bMax = false; //-- Возможно объём выборки не превысит максимально допустимого 
      nRow = 0;     //-- Число строк в выборке
      wspErr = null;
      int n = (psp==null)? 0: psp.Length;
      SqlParameter[] asp = new SqlParameter[n];
      try {
        for (int i=0;i<n;i++) asp[i] = new SqlParameter((string)psp[i][0], psp[i][1]);
        //{
        //str= (string)psp[i][0]; str = str.IndexOf(@"@") == 0 ? str : @"@" + str;
        //asp[i] = new SqlParameter(str, psp[i][1]);
        //}
        using (SqlConnection connection = new SqlConnection(гп.str_Соединение)) {
          connection.Open();
          SqlCommand command = new SqlCommand("", connection);
          command.Parameters.Clear();
          command.Parameters.AddRange(asp);
          command.CommandText = spname;
          command.CommandType = CommandType.StoredProcedure;

          //-- Формируем коллекцию из выборки
          using (reader = command.ExecuteReader()) { sp(RowToEntity); }
        }
      }
      catch (Exception ex){ wspErr = ex.Message; }
    }
    //-- Выполнение хранимой процедуры
    public static void Entity_Txt(string text, object[][] psp, dlg_RowToEntity RowToEntity) {
      nRow = 0;  //-- Число строк в выборке
      SqlDataReader reader;
      wspErr = null;
      int n = (psp == null) ? 0 : psp.Length;
      SqlParameter[] asp = new SqlParameter[n];
      try {
        for (int i = 0; i < n; i++) asp[i] = new SqlParameter((string)psp[i][0], psp[i][1]);
        //{
        //str= (string)psp[i][0]; str = str.IndexOf(@"@") == 0 ? str : @"@" + str;
        //asp[i] = new SqlParameter(str, psp[i][1]);
        //}
        using (SqlConnection connection = new SqlConnection(гп.str_Соединение)) {
          connection.Open();
          SqlCommand command = new SqlCommand("", connection);
          command.Parameters.Clear();
          command.Parameters.AddRange(asp);
          command.CommandText = text;
          command.CommandType = CommandType.Text;

          //-- Формируем коллекцию из выборки
          using (reader = (SqlDataReader)command.ExecuteReader()) { sp_Sel(RowToEntity); }
        }
      }
      catch (Exception ex) { wspErr = ex.Message; }
    }
  }
}
...
Рейтинг: 0 / 0
Ищу ORM для MSSQL поддержка ХП важна
    #39762059
Дмитрий Мух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВМоисеев,

то есть Вы ему предлагаете просто скопипастить вышеуказанный код?
...
Рейтинг: 0 / 0
Ищу ORM для MSSQL поддержка ХП важна
    #39762066
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВМоисеев>Читайте:...
<Смотрите:
)))
...
Рейтинг: 0 / 0
Ищу ORM для MSSQL поддержка ХП важна
    #39762083
ВМоисеев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>Дмитрий Мух, сегодня, 14:55 https://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1307687&msg=21789655][21789655]
>то есть Вы ему предлагаете просто скопипастить вышеуказанный код?
<Для своих приложений делаю именно так, а он пусть подходит творчески
...
Рейтинг: 0 / 0
Ищу ORM для MSSQL поддержка ХП важна
    #39762085
Дмитрий Мух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВМоисеев>Дмитрий Мух, сегодня, 14:55 https://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1307687&msg=21789655][21789655]
>то есть Вы ему предлагаете просто скопипастить вышеуказанный код?
<Для своих приложений делаю именно так
Понятно. Из приложения в приложение копипастите код.

Что мешает оформить как библиотеку? Завернуть в пакет?
...
Рейтинг: 0 / 0
Ищу ORM для MSSQL поддержка ХП важна
    #39762087
ВМоисеев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>Дмитрий Мух, сегодня, 15:51 https://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1307687&msg=21789694][21789694]
>Что мешает оформить как библиотеку? Завернуть в пакет?
<Ничего. Как то не до того, да и коды для Oracle и MSSQL не тождественны.
...
Рейтинг: 0 / 0
Ищу ORM для MSSQL поддержка ХП важна
    #39762088
ВМоисеев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>Дмитрий Мух, сегодня, 15:51 https://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1307687&msg=21789694][21789694]
>...Из приложения в приложение копипастите код.
<Я может быть недопонимаю Вас. Код находится в wsp.cs.
...
Рейтинг: 0 / 0
Ищу ORM для MSSQL поддержка ХП важна
    #39762099
Дмитрий Мух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВМоисеев>Дмитрий Мух, сегодня, 15:51 https://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1307687&msg=21789694][21789694]
>...Из приложения в приложение копипастите код.
<Я может быть недопонимаю Вас. Код находится в wsp.cs.
Выше вы писали:
ВМоисеев>то есть Вы ему предлагаете просто скопипастить вышеуказанный код ?
< Для своих приложений делаю именно так , а он пусть подходит творчески
Выходит Вы из приложения в приложение копипастите код. Почему?
...
Рейтинг: 0 / 0
Ищу ORM для MSSQL поддержка ХП важна
    #39762103
ВМоисеев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>Дмитрий Мух, сегодня, 17:13 https://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1307687&msg=21789736][21789736]
>Выходит Вы из приложения в приложение копипастите код. Почему?
<Я не понимаю Вас.
Вот одно SPA, что находится в хранилище:
db_Хранилище.rar

Вот другое SPA, развернутое и работающее на клиенте:
...
Рейтинг: 0 / 0
Ищу ORM для MSSQL поддержка ХП важна
    #39762120
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
и так будет до 2030 ого года
...
Рейтинг: 0 / 0
Ищу ORM для MSSQL поддержка ХП важна
    #39762121
Дмитрий Мух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВМоисеев>Дмитрий Мух, сегодня, 17:13 https://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1307687&msg=21789736][21789736]
>Выходит Вы из приложения в приложение копипастите код. Почему?
<Я не понимаю Вас.
Вот одно SPA, что находится в хранилище:
db_Хранилище.rar

Вот другое SPA, развернутое и работающее на клиенте:


Классно! Проехали :)
...
Рейтинг: 0 / 0
Ищу ORM для MSSQL поддержка ХП важна
    #39762176
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВМоисеев
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
public static void sp_Del(dlg_RowToEntity RowToEntity) {
      try {
        if (reader.Read()) {
          //-- Если читаем якобы удаленную строку, то удаления нет
          RowToEntity(reader);
          wspErr = "Запись кем то изменена";
        }
      }
      catch (System.InvalidOperationException ex) { wspErr = ex.Message; return; }
      catch (Exception ex) { wspErr = ex.Message; }
    }



Я тут немного ещё накину, так никогда не делайте, ребята.
Такая "обработка ошибок" это лютый зашквар.
...
Рейтинг: 0 / 0
Ищу ORM для MSSQL поддержка ХП важна
    #39762205
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt,

да ладно тебе, на фоне этого:
Код: c#
1.
2.
3.
4.
    public static int nRow;
    static SqlDataReader reader;
    public static string wspErr;
    public static bool bMax;


самое то :)
...
Рейтинг: 0 / 0
Ищу ORM для MSSQL поддержка ХП важна
    #39762208
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А параметры в виде массива массивов object так прекрасны по сравнению с выражением.
...
Рейтинг: 0 / 0
Ищу ORM для MSSQL поддержка ХП важна
    #39762291
256k
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123ВМоисеев,
Вам всем, таким вот пейсателям пенсионерам, не хватает мужества написать одну фразу:
"Я весь функционал ОРМ реализовал самостоятельно".
Но выжевархитектуреничегонепонимаете.
Удачи!

П. , ваши высказывания выглядят слишком категоричными, не находите?
...
Рейтинг: 0 / 0
Ищу ORM для MSSQL поддержка ХП важна
    #39762305
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
256k,
А вам какое дело? Вы не программист, не архитектор, а праздно шатающийся без дела.
...
Рейтинг: 0 / 0
Ищу ORM для MSSQL поддержка ХП важна
    #39762339
ВМоисеев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>skyANA, сегодня, 08:00 https://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1307687&msg=21789958][21789958]
>А параметры в виде массива массивов object так прекрасны по сравнению с выражением.
<Видите ли, хочется сделать смысловую часть приложения более или менее независимой от провайдера и базы данных (некая инвариантность). Для Oracle обработка параметров запроса ХП выполняется так:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
     //-- Выполнение хранимой процедуры
    public static void Entity_SP(string spname, dlg_sp sp, object[][] psp, dlg_RowToEntity RowToEntity) {
      reader = null; wspErr = null; bMax = false;
      int n = (psp==null)? 0: psp.Length;
      OracleParameter[] asp = new OracleParameter[n+1];
      asp[0]= new OracleParameter("cur_viborka", OracleDbType.Cursor, ParameterDirection.Output);
      try {
        for (int i=0;i<n;i++) {
          switch (psp[i].Length) {
            case 2: asp[i+1] = new OracleParameter((string)psp[i][0], psp[i][1]); break;
            case 3: asp[i+1] = new OracleParameter((string)psp[i][0], OracleDbType.Raw, (int)psp[i][1], psp[i][2], ParameterDirection.Input); break;
          }
        }
     . . .




Обработка для MSSQL приведена выше.
Если у Вас есть более изящный вариант решения вопроса инвариантности - код в студию.
...
Рейтинг: 0 / 0
Ищу ORM для MSSQL поддержка ХП важна
    #39762346
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВМоисеевкод в студию.любая ОРМ или MDAC без ОРМ на датасетах.
Сравнивайте сами, если сможете.
...
Рейтинг: 0 / 0
Ищу ORM для MSSQL поддержка ХП важна
    #39762390
ВМоисеев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>Petro123, сегодня, 13:42 https://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1307687&msg=21790220][21790220]
>...Сравнивайте сами, если сможете.
<Какие интересные люди - одному не понравился мой вариант структуры для промежуточного хранения параметров, другой отсылаем на разгребание кучи - может найдет или отвяжется. Так можешь дать свой вариант структуры?
...
Рейтинг: 0 / 0
Ищу ORM для MSSQL поддержка ХП важна
    #39762394
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВМоисеев>skyANA, сегодня, 08:00 https://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1307687&msg=21789958][21789958]
>А параметры в виде массива массивов object так прекрасны по сравнению с выражением.
<Видите ли, хочется сделать смысловую часть приложения более или менее независимой от провайдера и базы данных (некая инвариантность). Для Oracle обработка параметров запроса ХП выполняется так:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
     //-- Выполнение хранимой процедуры
    public static void Entity_SP(string spname, dlg_sp sp, object[][] psp, dlg_RowToEntity RowToEntity) {
      reader = null; wspErr = null; bMax = false;
      int n = (psp==null)? 0: psp.Length;
      OracleParameter[] asp = new OracleParameter[n+1];
      asp[0]= new OracleParameter("cur_viborka", OracleDbType.Cursor, ParameterDirection.Output);
      try {
        for (int i=0;i<n;i++) {
          switch (psp[i].Length) {
            case 2: asp[i+1] = new OracleParameter((string)psp[i][0], psp[i][1]); break;
            case 3: asp[i+1] = new OracleParameter((string)psp[i][0], OracleDbType.Raw, (int)psp[i][1], psp[i][2], ParameterDirection.Input); break;
          }
        }
     . . .





Обработка для MSSQL приведена выше.
Если у Вас есть более изящный вариант решения вопроса инвариантности - код в студию.
Object-relational mapping.

Просто отображение должно быть в обе стороны, то есть фильтры задаваться в терминах Entity, а не параметров хранимой процедуры :)
...
Рейтинг: 0 / 0
Ищу ORM для MSSQL поддержка ХП важна
    #39762397
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВМоисеевТак можешь дать свой вариант структуры?
Я вот почему-то помню, что Вы давали. А Вы нет.

Цитирую ( 20604487 ):
skyANAВМоисеевПокажите Ваш код.
Я бы написал что-то такое:

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
using Context = ApplicationQueryContext;

public class ApplicationQuery : SqlQuery<Context, Application>
{
    protected override IDbCommand CreateCommand(Context context)
    {
        var command = new SqlCommand("sp_application_select") { CommandType = CommandType.StoredProcedure };

        command.Parameters.AddWithValue("guid", context.Guid);
        command.Parameters.AddWithValue("name", context.Name);

        return command;
    }

    protected override Application ToResult(IDataRecord record)
    {
        return new Application { ... };
    }
}




Теперь покажем выборку в DataGrid-е:

Код: c#
1.
gridApplications.ItemsSource = query.Ask(queryContext).AsObservable();
...
Рейтинг: 0 / 0
Ищу ORM для MSSQL поддержка ХП важна
    #39762407
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВМоисеев,
Дак ты сам скачешь по темам как заяц).
Тема разве про структуру?
Тебе сказали ОРМ, ты в ответ простыню кода "смотри как я умею". Причем не автору, а в пустоту. Сам с собою.
...
Независимость кода от провайдеров и бд КАКИХ КОНКРЕТНО?
Должен показывать почему то я)))) LOL.
Правда ты не учился что в ОРМ независимость от оракле и постгри в этом?
<add name=MyConnection connectionString=ddddxxx, providerName =ssssss
...
Рейтинг: 0 / 0
Ищу ORM для MSSQL поддержка ХП важна
    #39762410
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВМоисеевОбработка для MSSQL приведена выше.а с кодом хранимки из оракле в сиквел что делаешь?
С типами данных? С тем что сиквел блокировочник?
...
Рейтинг: 0 / 0
Ищу ORM для MSSQL поддержка ХП важна
    #39762414
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВМоисеевОбработка для MSSQL приведена выше.
Если у Вас есть более изящный вариант решения вопроса инвариантности - код в студию.

Для абстракции от конкретной СУБД, применяют ORM.
Например, Entity Framework, из коробки умеет.

Ваш подход ущербный чуть менее, чем полностью.
Не воспринимайте на личный счёт, речь идёт от вашем коде.
Так плохо, что даже не подходит для примеров, как не надо делать, -- это должно быть очевидно.
...
Рейтинг: 0 / 0
Ищу ORM для MSSQL поддержка ХП важна
    #39762478
ВМоисеев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>skyANA, сегодня, 14:49 https://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1307687&msg=21790302][21790302]
>Цитирую:
<Хорошо, допустим. Но меня настораживают 2 нюанса:
1. В примере, что приводил выше приложение работает с 7 таблицами и 28 ХП. Код wsp.cs один для всех, вид обращения к ХП также одинаков. Меняются только параметры.
SELECT
xrow = null; lst_Entity = null; lst_Entity = new List<row_Entity>();
object[][] psp = new object[2][];
psp[0] = new object[2] { "@pk_Entity", pk_Guid };
psp[1] = new object[2] { "@str_Группа", xstr };
при.tmrStart(); await Task.Run(() => wsp.Entity_SP("au_Группы_Sel", wsp.sp_Sel, psp, RowToEntity)); при.tmrStop();
INSERT
object[][] psp = new object[1][];
psp[0] = new object[2] { "@pk_Entity", Guid.NewGuid() };
fun_InsUpd("Ins", psp);
UPDATE
object[][] psp = new object[3][];
psp[0] = new object[2] { "@pk_Entity", xrow.pk_Entity };
psp[1] = new object[2] { "@str_Группа", xrow.str_Группа };
psp[2] = new object[2] { "@ts_Entity", xrow.ts_Entity };
fun_InsUpd("Upd", psp);
}
private async void fun_InsUpd(string spWsp, object[][] psp) { //-- см. wsp.cs
bl_Разрешение = false;

xrow = null; lst_Entity = null;
dlg_sp sp = (spWsp != "Upd") ? (dlg_sp)wsp.sp_Ins : (dlg_sp)wsp.sp_Upd;
string ИмяХП = "au_Группы_" + spWsp;
при.tmrStart(); await Task.Run(() => wsp.Entity_SP(ИмяХП, sp, psp, RowToEntity)); при.tmrStop();
DELETE
object[][] psp = new object[2][];
psp[0] = new object[2] { "@pk_Entity", xrow.pk_Entity };
psp[1] = new object[2] { "@ts_Entity", xrow.ts_Entity };
xrow = null; lst_Entity = null;
при.tmrStart(); await Task.Run(() => wsp.Entity_SP("au_Группы_Del", wsp.sp_Del, psp, RowToEntity)); при.tmrStop();

А как будет у Вашем варианте, 28 классов?


2. Вот это я понимаю. Но откуда у программы телепатические возможности, где определены структура записи выборки и типы её полей?
...
Рейтинг: 0 / 0
Ищу ORM для MSSQL поддержка ХП важна
    #39762488
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВМоисеевКод wsp.cs один для всех,осталось убить всех и привести код из него.
...
Рейтинг: 0 / 0
Ищу ORM для MSSQL поддержка ХП важна
    #39762489
ВМоисеев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>Petro123, сегодня, 15:12 https://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1307687&msg=21790327][21790327]
>а с кодом хранимки из оракле в сиквел что делаешь?
<Не горячись. В Oracle свои хранимки в сиквеле - свои. Структура выборки одинакова (если возможно).
>С типами данных?
<См. IDataRecord
...
Рейтинг: 0 / 0
Ищу ORM для MSSQL поддержка ХП важна
    #39762494
ВМоисеев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>hVostt, сегодня, 15:21 https://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1307687&msg=21790337][21790337]
>Для абстракции от конкретной СУБД, применяют ORM.
<Не нужен мне бульдозер с крыльями и меня не интересует его возможности летака.
...
Рейтинг: 0 / 0
Ищу ORM для MSSQL поддержка ХП важна
    #39762502
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВМоисеев>Petro123, сегодня, 15:12 https://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1307687&msg=21790327][21790327]
>а с кодом хранимки из оракле в сиквел что делаешь?
<Не горячись. В Oracle свои хранимки в сиквеле - свои. Структура выборки одинакова (если возможно).
>С типами данных?
<См. IDataRecordну вот. А пугал то какими словами...
По факту сделал обертку хранимок и ни с чем не сравнивал.
...
Рейтинг: 0 / 0
Ищу ORM для MSSQL поддержка ХП важна
    #39762504
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВМоисеев>hVostt, сегодня, 15:21 https://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1307687&msg=21790337][21790337]
>Для абстракции от конкретной СУБД, применяют ORM.
<Не нужен мне бульдозер с крыльями и меня не интересует его возможности летака.
Сказал инженер используя счеты с костяшками.
...
Рейтинг: 0 / 0
Ищу ORM для MSSQL поддержка ХП важна
    #39762530
ВМоисеев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>skyANA, сегодня, 14:45 https://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1307687&msg=21790298][21790298]
>...Просто отображение должно быть в обе стороны…
<Почему? Для меня сущность не кирпич, - а соты, со своей структурой и своими полями. Мне нужно, чтобы обратные отображения отражали нужные поля сущности на параметры ХП, которая и делает нужное. Мне ближе функциональный подход - задал параметры, обратился к функции и работай с данными.
...
Рейтинг: 0 / 0
Ищу ORM для MSSQL поддержка ХП важна
    #39762576
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВМоисеев>skyANA, сегодня, 14:45 https://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1307687&msg=21790298][21790298]
>...Просто отображение должно быть в обе стороны…
<Почему? Для меня сущность не кирпич, - а соты, со своей структурой и своими полями. Мне нужно, чтобы обратные отображения отражали нужные поля сущности на параметры ХП, которая и делает нужное. Мне ближе функциональный подход - задал параметры, обратился к функции и работай с данными.
Что такое функциональный подход в вашем понимании?
...
Рейтинг: 0 / 0
Ищу ORM для MSSQL поддержка ХП важна
    #39762580
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВМоисеевА как будет у Вашем варианте, 28 классов?
В моём варианте чего?

В моём варианте будет 10 запросов одновременно выполняться.
Что скажет на это Ваш wsp? :)
...
Рейтинг: 0 / 0
Ищу ORM для MSSQL поддержка ХП важна
    #39762586
ВМоисеев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>skyANA, сегодня, 01:09 https://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1307687&msg=21790706][21790706]
>...Что скажет на это Ваш wsp? :)
<В моём текущем варианте в конкретный момент времени приложение выполняет только одну ХП. Нужно большее - перенеси wsp.cs из clsApp нужные UserControl.
Моё понимание функции стандартно - y=f(x).
И всё таки сколько классов public class ApplicationQuery : SqlQuery<Context, Application> потребуется для работы с 28 ХП?
...
Рейтинг: 0 / 0
Ищу ORM для MSSQL поддержка ХП важна
    #39762587
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВМоисеев>skyANA, сегодня, 01:09 https://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1307687&msg=21790706][21790706]
>...Что скажет на это Ваш wsp? :)
<В моём текущем варианте в конкретный момент времени приложение выполняет только одну ХП. Нужно большее - перенеси wsp.cs из clsApp нужные UserControl.
А это ничего не даст.
...
Рейтинг: 0 / 0
Ищу ORM для MSSQL поддержка ХП важна
    #39762588
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВМоисеевМоё понимание функции стандартно - y=f(x).
И где же это у Вас в wsp?
...
Рейтинг: 0 / 0
Ищу ORM для MSSQL поддержка ХП важна
    #39762589
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВМоисеевИ всё таки сколько классов public class ApplicationQuery : SqlQuery<Context, Application> потребуется для работы с 28 ХП?
Зачем мне 28 ХП?
...
Рейтинг: 0 / 0
Ищу ORM для MSSQL поддержка ХП важна
    #39762598
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВМоисеев>hVostt, сегодня, 15:21 https://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1307687&msg=21790337][21790337]
>Для абстракции от конкретной СУБД, применяют ORM.
<Не нужен мне бульдозер с крыльями и меня не интересует его возможности летака.

Извините, но это не аргумент, а сопливые детские слюни.
Настолько осточертело уже слышать вот этот дикий бред, что даже комментировать неохота.

На самом деле объясняется довольно просто.
Вам тупо лень разбираться, читать, изучать как делать нормально.
Или нет соответствующих способностей.

Ничего страшного, разработка далеко не всем даётся.
...
Рейтинг: 0 / 0
Ищу ORM для MSSQL поддержка ХП важна
    #39762612
Сон Веры Павловны
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttВМоисеев>hVostt, сегодня, 15:21 https://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1307687&msg=21790337][21790337]
>Для абстракции от конкретной СУБД, применяют ORM.
<Не нужен мне бульдозер с крыльями и меня не интересует его возможности летака.

Извините, но это не аргумент, а сопливые детские слюни.
Настолько осточертело уже слышать вот этот дикий бред, что даже комментировать неохота.

На самом деле объясняется довольно просто.
Вам тупо лень разбираться, читать, изучать как делать нормально.
Или нет соответствующих способностей.

Ничего страшного, разработка далеко не всем даётся.
"И вновь продолжается бой" (ц).
"Object/Relational Mapping is the Vietnam of Computer Science" - 15 с лишним лет тому назад было сказано, а до сих пор актуально.
...
Рейтинг: 0 / 0
Ищу ORM для MSSQL поддержка ХП важна
    #39762617
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВМоисеев,
За 15 лет после твоей первой и последней программы ты поменял имена переменных на английский.
Ждем твою простынь опять в каком нибудь топике не под катом.
Удачи)
...
Рейтинг: 0 / 0
Ищу ORM для MSSQL поддержка ХП важна
    #39762683
ВМоисеев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>skyANA, сегодня, 02:39 https://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1307687&msg=21790717][21790717]
>А это ничего не даст.
<Почему?
...
Рейтинг: 0 / 0
Ищу ORM для MSSQL поддержка ХП важна
    #39762690
ВМоисеев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>hVostt, сегодня, 03:59 https://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1307687&msg=21790728][21790728]
>Извините, но это не аргумент, а сопливые детские слюни.
<Ваше художественное словоблудие на тему: моё или неправильное, на меня не действует.
Выше я привёл функционал работы с информацией Хранилища. Дал "стоимость" реализации в байтах. Для меня этот параметр важен, ибо "таскаю" измененное приложение из Хранилища на раб. станцию.
Думаю, что подобное приложение реализовывали многие с использованием ORM. Покажите размер бинарного варианта.
...
Рейтинг: 0 / 0
Ищу ORM для MSSQL поддержка ХП важна
    #39762706
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВМоисеевфункционал работы с информацией Хранилища.сначала пугали страшным словом Инвариантность.
Теперь страшное слово "информацией Хранилища".
Это не то хранилище что в дельфи обсуждали \ осуждали?
Там ребята очень практичные против страшных слов.
...
Рейтинг: 0 / 0
Ищу ORM для MSSQL поддержка ХП важна
    #39762855
ВМоисеев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>Petro123, сегодня, 11:50 https://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1307687&msg=21790907][21790907]
>Теперь страшное слово "информацией Хранилища".
<Всё совсем не страшно.
У меня Хранилище приложений состоит из:
1. базы данных (простенькая MSSQL) с таблицами и ХП,
2. файлового сервера для хранения .rar контейнеров бинарных версий реализации пользовательских приложений
3. ПО для работы с базой данных:
- WCF сервис доступа к базе данных,
- Пускач (launcher),
- Приложение для работы с таблицами базы данных Хранилища.
Собственно клиентское приложение о Хранилище ничего не знает. При запуске оно получает информацию о доступе к своим серверам (данных и файловых) и работает как двухзвенка.
...
Рейтинг: 0 / 0
Ищу ORM для MSSQL поддержка ХП важна
    #39762876
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВМоисеевВсё совсем не страшно.сожалею. Это никому не нужно.
Выше приводил ссыль из дельфи.
...
Рейтинг: 0 / 0
Ищу ORM для MSSQL поддержка ХП важна
    #39763053
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВМоисеевДля меня этот параметр важен, ибо "таскаю" измененное приложение из Хранилища на раб. станцию.

Всё изменённое? Знаете, если мне это вдруг будет это когда-то важно, я организую доставку изменений (патчи), а не ВСЁ приложение. При таком раскладе, моё решение безбожно выиграет у вашего, даже если целиком оно там будет на пару метров больше весить.

Поэтому, я тысячекратно извиняюсь, но у вас очередной глупый детский аргумент.


ВМоисеевДумаю, что подобное приложение реализовывали многие с использованием ORM. Покажите размер бинарного варианта.

Мне больше заняться нечем. Это очевидные вещи.
Говнокодить, ковыряться в гомне, не желать развиваться и учиться -- богом данное вам право, я не собираюсь его каким-то образом попирать.
...
Рейтинг: 0 / 0
Ищу ORM для MSSQL поддержка ХП важна
    #39763098
ВМоисеев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>hVostt, сегодня, 19:04 https://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1307687&msg=21791475][21791475]
>...Знаете, если мне это вдруг будет…
< Кончайте гнать пургу. Уже подташнивает.
Куда будете доставлять патчи и что будете делать с ними?
Например, изменилась структура одной таблицы базы данных Хранилища. Я скорректирую приложение работы с таблицами, откомпилирую, архивирую бинарную папку в контейнер и положу контейнер в папку файлового сервера Хранилища. Вы что будете делать? Или как обычно будете продолжать нести ахинею.
< ...Говнокодить, ковыряться в гомне,...
Ну что сказать любителям жолудей - не дано вам понять вкус моих апельсинов. Не дано. А тявкать - ваше право.
...
Рейтинг: 0 / 0
Ищу ORM для MSSQL поддержка ХП важна
    #39763123
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВМоисеев>Особенно интересует, чтобы была поддержка работы с хранимыми процедурами.
<С ХП работаю так, пример (выборка формируется в List lst_Entity):
вам помогли 4 страницы в чужом топике и чужой теме про ОРМ?
...
Рейтинг: 0 / 0
Ищу ORM для MSSQL поддержка ХП важна
    #39763223
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВМоисеев>skyANA, сегодня, 02:39 https://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1307687&msg=21790717][21790717]
>А это ничего не даст.
<Почему?
:)

Потому что я хочу выполнять одновременно несколько вызовов одной и той же процедуры, каждый со своими параметрами.
...
Рейтинг: 0 / 0
Ищу ORM для MSSQL поддержка ХП важна
    #39763345
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВМоисеевКуда будете доставлять патчи и что будете делать с ними?
Например, изменилась структура одной таблицы базы данных Хранилища. Я скорректирую приложение работы с таблицами, откомпилирую, архивирую бинарную папку в контейнер и положу контейнер в папку файлового сервера Хранилища. Вы что будете делать? Или как обычно будете продолжать нести ахинею.

В смысле куда? Патчи это изменённые, новые файлы и список файлов, которые надо удалить. Формируем патч, отправляем клиентам через механизм обновления.

ВМоисеевНу что сказать любителям жолудей - не дано вам понять вкус моих апельсинов. Не дано. А тявкать - ваше право.

Как я вижу, никаких сдвигов за такое время. Совсем не страшно, когда человек чего-то не умеет, или не знает. Страшно, когда патологически он не способен учиться и усваивать информацию. Как говориться, живите в говне, мне вообще пофигу.
...
Рейтинг: 0 / 0
Ищу ORM для MSSQL поддержка ХП важна
    #39765941
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttвсё верно, отжимается поток и добавляются совершенно ненужные накладные расходы, к тому же для оборачивания синхронного кода в асинхронный, нужно использовать TaskCompletionSource, а вот такой код -- это обычное тупое непонимание происходящего, нежелание разбираться, быдло кодинг во всей красе.

hVostt , а подскажи пожалуйста, в чем будет разница между оборачиванием в TaskCompletionSource и
Код: c#
1.
await Task.Factory.StartNew(() => ..., TaskCreationOptions.LongRunning)

ведь один фиг для выполнения синхронной операции нам требуется занять какой-то поток?
...
Рейтинг: 0 / 0
Ищу ORM для MSSQL поддержка ХП важна
    #39766169
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro,

вот здесь достаточно понятно написано

https://andrey.moveax.ru/post/csharp-sync-to-async
...
Рейтинг: 0 / 0
Ищу ORM для MSSQL поддержка ХП важна
    #39766172
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот чтиво для чуть более глубокого погружения, рекомендую:

https://docs.microsoft.com/en-us/dotnet/standard/parallel-programming/tpl-and-traditional-async-programming
...
Рейтинг: 0 / 0
Ищу ORM для MSSQL поддержка ХП важна
    #39766179
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttвот здесь достаточно понятно написано

https://andrey.moveax.ru/post/csharp-sync-to-async Честно говоря, не очень (в контексте моего вопроса). Если не говорить о ситуации немедленного возврата результата, там просто рассматривается ситуация, когда забыли обработать исключение в TCS. В моем же вопросе исключение будет отловлено корректно
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
			try
			{
				await Task.Factory.StartNew(() => throw new Exception(), TaskCreationOptions.LongRunning);
			}
			catch (Exception e)
			{
				Console.WriteLine(e);
			}

То есть, допустим, как я должен правильно поступить, чтобы асинхронно выполнить, скажем, System.IO.File.Copy (не берем в расчет наличие асинхронных методов работы с потоками)?
...
Рейтинг: 0 / 0
Ищу ORM для MSSQL поддержка ХП важна
    #39766180
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЗЫ: Вторую ссылку пока штудирую
...
Рейтинг: 0 / 0
Ищу ORM для MSSQL поддержка ХП важна
    #39766227
Фотография LR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro,

как я понял, в первую очередь это средство привести "старые" асинхронные апи к "парадигме" Tasks
The Nature of TaskCompletionSource<TResult>But in any compositional system that wants to use Task as its centerpiece, just support for asynchronous delegate execution isn’t enough: support must be provided for other asynchronous operations as well. For example, there are a variety of asynchronous operations already implemented in the .NET Framework and exposed through the Asynchronous Programming Model (APM) pattern or the Event-Based Asynchronous Pattern (EAP). In both of these cases, we’d like to be able to refer to these asynchronous operations as Tasks and operate on them as Tasks, even though the underlying work isn’t necessarily being performed by scheduling and executing a delegate.здесь https://blogs.msdn.microsoft.com/pfxteam/2009/06/02/the-nature-of-taskcompletionsourcetresult/
и вот еще https://stackoverflow.com/questions/15316613/when-should-taskcompletionsourcet-be-used
...
Рейтинг: 0 / 0
Ищу ORM для MSSQL поддержка ХП важна
    #39766229
Фотография LR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Т.е., "оборачивать в TaskCompletionSource" Task.Factory.StartNew вроде как особого смысла нет.
...
Рейтинг: 0 / 0
Ищу ORM для MSSQL поддержка ХП важна
    #39766251
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro,

ну смотри
Код: 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.
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.
   class Program
    {
        static async Task Main(string[] args)
        {
            Console.WriteLine("\n=== WithTcs");
            Console.WriteLine("Main Thread: " + Thread.CurrentThread.ManagedThreadId);

            try
            {
                var result = await WithTcs();
                Console.WriteLine("result: "+ result);
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex);
            }


            Console.WriteLine("\n=== WithoutTcs");
            Console.WriteLine("Main Thread: " + Thread.CurrentThread.ManagedThreadId);

            try
            {
                var result = await WithoutTcs();
                Console.WriteLine("result: " + result);
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex);
            }

            Console.ReadLine();
        }

        public static async Task<int> WithoutTcs()
        {
            Console.WriteLine("Thread start: " + Thread.CurrentThread.ManagedThreadId);
            int value = 42;
            var result = await Task.Run(() =>
            {
                Console.WriteLine("Thread run: " + Thread.CurrentThread.ManagedThreadId);
                return LongRunningSyncOperation(value);
            });
            Console.WriteLine("Thread end: " + Thread.CurrentThread.ManagedThreadId);
            return value;
        }

        public static Task<int> WithTcs()
        {
            Console.WriteLine("Thread start: " + Thread.CurrentThread.ManagedThreadId);
            var tcs = new TaskCompletionSource<int>();
            int value = 42;
            Task.Run(() =>
            {
                Console.WriteLine("Thread run: " + Thread.CurrentThread.ManagedThreadId);
                try
                {
                    var result = LongRunningSyncOperation(value);
                    tcs.SetResult(result);
                }
                catch (Exception ex)
                {
                    tcs.SetException(ex);
                }
            });
            Console.WriteLine("Thread end: " + Thread.CurrentThread.ManagedThreadId);
            return tcs.Task;
        }

        public static int LongRunningSyncOperation(int value)
        {
            Thread.Sleep(2000);
            throw new Exception("Упс");
            Thread.Sleep(2000);
            return value + 100;
        }
    }



чё получилось:

Код: powershell
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.
=== WithTcs
Main Thread: 1
Thread start: 1
Thread end: 1
Thread run: 3
System.Exception: Упс
   в TestTcs.Program.LongRunningSyncOperation(Int32 value) в D:\TestTcs\TestTcs\Program.cs:строка 82
   в TestTcs.Program.<>c__DisplayClass2_0.<WithTcs>b__0() в D:\TestTcs\TestTcs\Program.cs:строка 67
--- Конец трассировка стека из предыдущего расположения, где возникло исключение ---
   в System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   в System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   в System.Runtime.CompilerServices.TaskAwaiter`1.GetResult()
   в TestTcs.Program.<Main>d__0.MoveNext() в D:\TestTcs\TestTcs\Program.cs:строка 19

=== WithoutTcs
Main Thread: 3
Thread start: 3
Thread run: 4
System.Exception: Упс
   в TestTcs.Program.LongRunningSyncOperation(Int32 value) в D:\TestTcs\TestTcs\Program.cs:строка 82
   в TestTcs.Program.<>c__DisplayClass1_0.<WithoutTcs>b__0() в D:\TestTcs\TestTcs\Program.cs:строка 51
   в System.Threading.Tasks.Task`1.InnerInvoke()
   в System.Threading.Tasks.Task.Execute()
--- Конец трассировка стека из предыдущего расположения, где возникло исключение ---
   в System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   в System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   в System.Runtime.CompilerServices.TaskAwaiter`1.GetResult()
   в TestTcs.Program.<WithoutTcs>d__1.MoveNext() в D:\TestTcs\TestTcs\Program.cs:строка 48
--- Конец трассировка стека из предыдущего расположения, где возникло исключение ---
   в System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   в System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   в System.Runtime.CompilerServices.TaskAwaiter`1.GetResult()
   в TestTcs.Program.<Main>d__0.MoveNext() в D:\TestTcs\TestTcs\Program.cs:строка 33



как правильно отметили, TCS нужен прежде всего для обслуживания асинхронного кода, основанного на событиях. это не обязательно должен быть EAP. это может быть запущенный внешний процесс и подписка на событие его закрытия, для десктопов актуально.

TCS не создаёт поток, это ключевое.

синхронный код, который мы переделываем в асинхронный в стиле TAP с помощью TaskCompletionSource, не компилируется в машину состояний, точка ожидания всего одна единственная.

LRТ.е., "оборачивать в TaskCompletionSource" Task.Factory.StartNew вроде как особого смысла нет.

да вообще-то есть, если это не какой-то код на коленке на выброс.
...
Рейтинг: 0 / 0
Ищу ORM для MSSQL поддержка ХП важна
    #39766252
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.ProТо есть, допустим, как я должен правильно поступить, чтобы асинхронно выполнить, скажем, System.IO.File.Copy (не берем в расчет наличие асинхронных методов работы с потоками)?

в целом -- плохая идея, вставлять в асинхронный код длительные вызовы операций через Task.Run.
лучше выделить такие функции и превратить в асинхронные обёртки с TCS (внутри можно с тем же Task.Run).
завтра для синхронного АПИ появится асинхронный, а код уже весь в костылях.
...
Рейтинг: 0 / 0
Ищу ORM для MSSQL поддержка ХП важна
    #39766274
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttдлительные вызовыя бы выделил другой критерий - работа с событиями в потоках.
Если этого нет, то Всегда используем не TCS а await.

Shocker.Proкак я должен правильно поступить, чтобы асинхронно выполнить, скажем, System.IO.File.Copy (await
...
Рейтинг: 0 / 0
Ищу ORM для MSSQL поддержка ХП важна
    #39766375
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttну смотриНу так в твоем примере WithoutTcs два await-а, то есть ты await-ишь сам вызов метода, а внутри еще раз await-ишь уже задачу, естественно это избыточно, и в данном случае порождает лишний поток. Вариант WithTcs второго await-а не имеет, он оптимальнее - тут понятно.

Но в критикуемом тобой варианте ВМоисеев-а нет обертки и, стало быть, нет второго await-а, ну или в моем варианте:
Код: c#
1.
await Task.Run(()=>System.IO.File.Delete(path))

(просто строка в коде, без всяких оберток) - чем этот вариант будет хуже, чем если сделать Tcs-обертку для Delete()?


(если Хвост что-то ругает, а я не понимаю почему - это не Хвост сказал глупость, это я чего-то недопонял и требуется разобраться
)
...
Рейтинг: 0 / 0
Ищу ORM для MSSQL поддержка ХП важна
    #39766388
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro требуется разобраться только не на простынях ВМоисеева)
...
Рейтинг: 0 / 0
Ищу ORM для MSSQL поддержка ХП важна
    #39766421
256k
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123Shocker.Pro требуется разобраться только не на простынях ВМоисеева)

чёткие месыджы от юзера П. в "чужом топике"(ц)
...
Рейтинг: 0 / 0
Ищу ORM для MSSQL поддержка ХП важна
    #39766433
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
256k,
А ты кто чтобы оценивать? Иди с событиями разберись. И принципы ООП выучи для собеса.
...
Рейтинг: 0 / 0
Ищу ORM для MSSQL поддержка ХП важна
    #39766711
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.ProНо в критикуемом тобой варианте ВМоисеев-а нет обертки

в данном случае критикуется вставка Task.Run в середину кода, для достижения асинхронности длительных операциях. если так делаешь, используй TCS. хотя это ситуацию не сильно улучшает.

если хочешь по-хорошему, оберни синхронный API в обёртку асинхронного.
или хотя бы экстеншен-методы хотя бы.

Shocker.Proну или в моем варианте:
Код: c#
1.
await Task.Run(()=>System.IO.File.Delete(path))


(просто строка в коде, без всяких оберток) - чем этот вариант будет хуже, чем если сделать Tcs-обертку для Delete()?

если смотреть тупо в эту строчку кода безотносительно контекста, проблемы нет.
но в контексте проекта, это нужно обернуть в асинхронный АПИ.
ну и TCS улучшает производительность обёртки. особенно, если перед вызовом длительной операции может произойти преждевременный выход из метода.

суть проблемы: вставка Task.Run с синхронным длительным вызовом в середину асинхронного кода.


Shocker.Pro (если Хвост что-то ругает, а я не понимаю почему - это не Хвост сказал глупость, это я чего-то недопонял и требуется разобраться
)


мы просто по-разному на проблему смотрим,
я с точки зрения разработки в целом, а не проблем конкретных нескольких строчек кода :)
...
Рейтинг: 0 / 0
Ищу ORM для MSSQL поддержка ХП важна
    #39766712
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В целом понятно.

hVosttмы просто по-разному на проблему смотрим,
я с точки зрения разработки в целом, а не проблем конкретных нескольких строчек кода :)Есть моменты, когда сходу не удается отличить, где вопрос хорошей архитектуры, а где нюансовый косяк в конкретной строчке, тогда я начинаю расспрашивать.
...
Рейтинг: 0 / 0
129 сообщений из 129, показаны все 6 страниц
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Ищу ORM для MSSQL поддержка ХП важна
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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