Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / WinForms, .Net Framework Новый топик    Ответить
Топик располагается на нескольких страницах: Ctrl  назад   1 2 [3] 4 5 6   вперед  Ctrl      все
 Re: Ищу ORM для MSSQL поддержка ХП важна  [new]
ВМоисеев
Member

Откуда: Редкино
Сообщений: 1975
>Petro123, сегодня, 20:40 [21789371]
>Ну, если тебе не доходит тема: "Ищу ОРМ"... Мне, и я вижу остальным, по барабану.
<Если ты с придыханием... "Ищет ОРМ", то для меня - ищет прослойку с необходимым функционалом.
Повторяю, вот здесь открой ссылку и посмотри раздел API Examples. У меня это всё реализовано для работы с ХП. Только мне не надо в клиентском приложении создавать постоянные таблицы, временные по нужде создаются в рамках ХП. Мне не надо писать на клиенте реализацию SELECT, INSERT, UPDATE, DELETE - это всё реализовано в ХП и только в одном экземпляре.
Относительно остальных - каждому своё. Только не вижу примеров реализации функционала, подобного примеру и нет соответствующих цифирь.
19 янв 19, 22:41    [21789428]     Ответить | Цитировать Сообщить модератору
 Re: Ищу ORM для MSSQL поддержка ХП важна  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 38643
ВМоисеев,
Вам всем, таким вот пейсателям пенсионерам, не хватает мужества написать одну фразу:
"Я весь функционал ОРМ реализовал самостоятельно".
Но выжевархитектуреничегонепонимаете.
Удачи!
20 янв 19, 11:26    [21789540]     Ответить | Цитировать Сообщить модератору
 Re: Ищу ORM для MSSQL поддержка ХП важна  [new]
Дмитрий Мух
Member

Откуда: Зеленоград
Сообщений: 1893
ВМоисеев
>Petro123, сегодня, 20:40 [21789371]
>Ну, если тебе не доходит тема: "Ищу ОРМ"... Мне, и я вижу остальным, по барабану.
<Если ты с придыханием... "Ищет ОРМ", то для меня - ищет прослойку с необходимым функционалом.
Повторяю, вот здесь открой ссылку и посмотри раздел API Examples. У меня это всё реализовано для работы с ХП. Только мне не надо в клиентском приложении создавать постоянные таблицы, временные по нужде создаются в рамках ХП. Мне не надо писать на клиенте реализацию SELECT, INSERT, UPDATE, DELETE - это всё реализовано в ХП и только в одном экземпляре.
Относительно остальных - каждому своё. Только не вижу примеров реализации функционала, подобного примеру и нет соответствующих цифирь.

Топик называется "Ищу ORM для MSSQL поддержка ХП важна".
У вас не ORM, у вас обёртка над ADO.NET под свои нужды. Такие каждый писал до появления готовых библиотек.
Да и продолжают писать.

Вы этим предлагаете заняться ТСу? Или что?
20 янв 19, 11:36    [21789541]     Ответить | Цитировать Сообщить модератору
 Re: Ищу ORM для MSSQL поддержка ХП важна  [new]
ВМоисеев
Member

Откуда: Редкино
Сообщений: 1975
>Дмитрий Мух, сегодня, 11:36 [21789541]
>… Вы этим предлагаете заняться ТСу?...
<Чем будет заниматься ТС - его личное дело. Я предлагаю альтернативный вариант. Осознанный выбор за ним, но он должен видеть альтернативные варианты.
>Теперь по сути - … У вас не ORM, у вас обёртка над ADO.NET под свои нужды...
<Дайте определение ORM, определите его базовый функционал.
Или Вас коробит от такой записи SELECT:
      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 и предпочитаете такую:
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, написать свою прослойку или взять мою и допилить до своих нужд.
20 янв 19, 12:35    [21789571]     Ответить | Цитировать Сообщить модератору
 Re: Ищу ORM для MSSQL поддержка ХП важна  [new]
Дмитрий Мух
Member

Откуда: Зеленоград
Сообщений: 1893
ВМоисеев
Дайте определение ORM, определите его базовый функционал.

Общепринятое определение Вас устроит?

Object-relational mapping (ORM) in computer science is a programming technique for converting data between incompatible type systems using object-oriented programming languages.
20 янв 19, 12:48    [21789579]     Ответить | Цитировать Сообщить модератору
 Re: Ищу ORM для MSSQL поддержка ХП важна  [new]
Дмитрий Мух
Member

Откуда: Зеленоград
Сообщений: 1893
ВМоисеев
Или Вас коробит от такой записи SELECT:
      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-ы в хранимых процедурах.

А вот как Вы оформили вызов хранимой процедуры, от этого да, немного коробит.
20 янв 19, 12:50    [21789580]     Ответить | Цитировать Сообщить модератору
 Re: Ищу ORM для MSSQL поддержка ХП важна  [new]
Дмитрий Мух
Member

Откуда: Зеленоград
Сообщений: 1893
ВМоисеев
и записью выборки сущностей в List или ObservableCollection и предпочитаете такую:
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?
20 янв 19, 12:53    [21789581]     Ответить | Цитировать Сообщить модератору
 Re: Ищу ORM для MSSQL поддержка ХП важна  [new]
Дмитрий Мух
Member

Откуда: Зеленоград
Сообщений: 1893
ВМоисеев
>...Такие каждый писал до появления готовых библиотек…
<Он может найти подходящую ORM, написать свою прослойку или взять мою и допилить до своих нужд.

И как же ему взять Вашу прослойку и допилить под свои нужды?

Человеку нужно готовое и простое. А не фиг знает что и допиливать.
20 янв 19, 12:55    [21789582]     Ответить | Цитировать Сообщить модератору
 Re: Ищу ORM для MSSQL поддержка ХП важна  [new]
ВМоисеев
Member

Откуда: Редкино
Сообщений: 1975
>Дмитрий Мух, сегодня, 12:55 [21789582]
>...Человеку нужно готовое и простое. А не фиг знает что и допиливать…
Я не только SELECT, но и INSERT, UPDATE и DELETE реализую в ХП. И тут появляются нюансы - они все могут вернуть сущность, а нужно ли это ТС? Обстоятельства могут поставить его в нужную позу и тем не менее - пример:
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
 


<Общепринятое определение Вас устроит? Устроит. Назови хоть горшком, а делает то он что, каков функционал?
20 янв 19, 13:53    [21789616]     Ответить | Цитировать Сообщить модератору
 Re: Ищу ORM для MSSQL поддержка ХП важна  [new]
Дмитрий Мух
Member

Откуда: Зеленоград
Сообщений: 1893
ВМоисеев
Общепринятое определение Вас устроит? Устроит. Назови хоть горшком, а делает то он что, каков функционал?

Читайте: https://en.wikipedia.org/wiki/Object-relational_mapping

Информация открыта.
20 янв 19, 14:01    [21789624]     Ответить | Цитировать Сообщить модератору
 Re: Ищу ORM для MSSQL поддержка ХП важна  [new]
Дмитрий Мух
Member

Откуда: Зеленоград
Сообщений: 1893
ВМоисеев
Я не только SELECT, но и INSERT, UPDATE и DELETE реализую в ХП.

Мы в курсе, Вы это уже писали и не раз.
ВМоисеев
И тут появляются нюансы - они все могут вернуть сущность, а нужно ли это ТС?

Ещё раз задам вопрос: "И как же ему взять Вашу прослойку и допилить под свои нужды?"
20 янв 19, 14:02    [21789626]     Ответить | Цитировать Сообщить модератору
 Re: Ищу ORM для MSSQL поддержка ХП важна  [new]
ВМоисеев
Member

Откуда: Редкино
Сообщений: 1975
>Дмитрий Мух, сегодня, 14:01 [21789624]
>Читайте:...
<Смотрите:
    //-- Сущность, что ассоциируется с выборкой из базы данных
    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);
    }
20 янв 19, 14:39    [21789644]     Ответить | Цитировать Сообщить модератору
 Re: Ищу ORM для MSSQL поддержка ХП важна  [new]
Дмитрий Мух
Member

Откуда: Зеленоград
Сообщений: 1893
ВМоисеев
<Смотрите:
    //-- Сущность, что ассоциируется с выборкой из базы данных
    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);
    }

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

Вы лучше на вопрос дайте уже ответ: "И как же ему взять Вашу прослойку и допилить под свои нужды?"
20 янв 19, 14:45    [21789647]     Ответить | Цитировать Сообщить модератору
 Re: Ищу ORM для MSSQL поддержка ХП важна  [new]
ВМоисеев
Member

Откуда: Редкино
Сообщений: 1975
>Дмитрий Мух, сегодня, 14:02 [21789626]
>Ещё раз задам вопрос:...
<Так это не секрет, я Вам уже показывал, повторяю:
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; }
    }
  }
}
20 янв 19, 14:54    [21789651]     Ответить | Цитировать Сообщить модератору
 Re: Ищу ORM для MSSQL поддержка ХП важна  [new]
Дмитрий Мух
Member

Откуда: Зеленоград
Сообщений: 1893
ВМоисеев,

то есть Вы ему предлагаете просто скопипастить вышеуказанный код?
20 янв 19, 14:55    [21789655]     Ответить | Цитировать Сообщить модератору
 Re: Ищу ORM для MSSQL поддержка ХП важна  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 38643
ВМоисеев
>Читайте:...
<Смотрите:

)))
20 янв 19, 15:08    [21789666]     Ответить | Цитировать Сообщить модератору
 Re: Ищу ORM для MSSQL поддержка ХП важна  [new]
ВМоисеев
Member

Откуда: Редкино
Сообщений: 1975
>Дмитрий Мух, сегодня, 14:55 [21789655]
>то есть Вы ему предлагаете просто скопипастить вышеуказанный код?
<Для своих приложений делаю именно так, а он пусть подходит творчески
20 янв 19, 15:47    [21789692]     Ответить | Цитировать Сообщить модератору
 Re: Ищу ORM для MSSQL поддержка ХП важна  [new]
Дмитрий Мух
Member

Откуда: Зеленоград
Сообщений: 1893
ВМоисеев
>Дмитрий Мух, сегодня, 14:55 [21789655]
>то есть Вы ему предлагаете просто скопипастить вышеуказанный код?
<Для своих приложений делаю именно так

Понятно. Из приложения в приложение копипастите код.

Что мешает оформить как библиотеку? Завернуть в пакет?
20 янв 19, 15:51    [21789694]     Ответить | Цитировать Сообщить модератору
 Re: Ищу ORM для MSSQL поддержка ХП важна  [new]
ВМоисеев
Member

Откуда: Редкино
Сообщений: 1975
>Дмитрий Мух, сегодня, 15:51 [21789694]
>Что мешает оформить как библиотеку? Завернуть в пакет?
<Ничего. Как то не до того, да и коды для Oracle и MSSQL не тождественны.
20 янв 19, 16:01    [21789699]     Ответить | Цитировать Сообщить модератору
 Re: Ищу ORM для MSSQL поддержка ХП важна  [new]
ВМоисеев
Member

Откуда: Редкино
Сообщений: 1975
>Дмитрий Мух, сегодня, 15:51 [21789694]
>...Из приложения в приложение копипастите код.
<Я может быть недопонимаю Вас. Код находится в wsp.cs.

К сообщению приложен файл. Размер - 41Kb
20 янв 19, 16:12    [21789702]     Ответить | Цитировать Сообщить модератору
 Re: Ищу ORM для MSSQL поддержка ХП важна  [new]
Дмитрий Мух
Member

Откуда: Зеленоград
Сообщений: 1893
ВМоисеев
>Дмитрий Мух, сегодня, 15:51 [21789694]
>...Из приложения в приложение копипастите код.
<Я может быть недопонимаю Вас. Код находится в wsp.cs.

Выше вы писали:
ВМоисеев
>то есть Вы ему предлагаете просто скопипастить вышеуказанный код?
<Для своих приложений делаю именно так, а он пусть подходит творчески

Выходит Вы из приложения в приложение копипастите код. Почему?
20 янв 19, 17:13    [21789736]     Ответить | Цитировать Сообщить модератору
 Re: Ищу ORM для MSSQL поддержка ХП важна  [new]
ВМоисеев
Member

Откуда: Редкино
Сообщений: 1975
>Дмитрий Мух, сегодня, 17:13 [21789736]
>Выходит Вы из приложения в приложение копипастите код. Почему?
<Я не понимаю Вас.
Вот одно SPA, что находится в хранилище:
db_Хранилище.rar

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

К сообщению приложен файл. Размер - 10Kb
20 янв 19, 17:44    [21789751]     Ответить | Цитировать Сообщить модератору
 Re: Ищу ORM для MSSQL поддержка ХП важна  [new]
ViPRos
Member

Откуда:
Сообщений: 9560
и так будет до 2030 ого года
20 янв 19, 18:27    [21789773]     Ответить | Цитировать Сообщить модератору
 Re: Ищу ORM для MSSQL поддержка ХП важна  [new]
Дмитрий Мух
Member

Откуда: Зеленоград
Сообщений: 1893
ВМоисеев
>Дмитрий Мух, сегодня, 17:13 [21789736]
>Выходит Вы из приложения в приложение копипастите код. Почему?
<Я не понимаю Вас.
Вот одно SPA, что находится в хранилище:
db_Хранилище.rar

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

Картинка с другого сайта.

Классно! Проехали :)
20 янв 19, 18:33    [21789774]     Ответить | Цитировать Сообщить модератору
 Re: Ищу ORM для MSSQL поддержка ХП важна  [new]
hVostt
Member

Откуда:
Сообщений: 15619
ВМоисеев
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; }
    }


Я тут немного ещё накину, так никогда не делайте, ребята.
Такая "обработка ошибок" это лютый зашквар. Картинка с другого сайта.
21 янв 19, 00:59    [21789915]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: Ctrl  назад   1 2 [3] 4 5 6   вперед  Ctrl      все
Все форумы / WinForms, .Net Framework Ответить