Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / WinForms, .Net Framework Новый топик    Ответить
Топик располагается на нескольких страницах: Ctrl  назад   1 .. 8 9 10 11 12 13 14 [15] 16 17   вперед  Ctrl
 Re: Исключения vs коды возвратов  [new]
ВМоисеев
Member

Откуда: Редкино
Сообщений: 2013
>skyANA, сегодня, 17:17 [21569592]
>Простите, а что Вы в базе храните?
На данный момент занимаюсь ГИС. Значит как минимум у объектов есть географические координаты.
Конкретнее - есть задача отображения положения объектов на географической карте в заданное время.
1. Есть объекты и их состояние (положение на карте)
2. Есть документы (извещения), которые меняют состояние объектов.
3. В процессе развития, объекты могут появляться или пропадать.
4. Одним из параметров извещения является время.
Попытка решения в лоб - ищется группа извещений, время которых меньше заданного, а группе ищутся с максимальным временем - оказалась не состоятельной. Задача перешла из режима отчетного документа в интерактивный режим. А здесь присутствует фактор времени. Десятки минут не катят.
Пока ничего лучшего не придумал, кроме как строить в дополнительной таблицы временные срезы и извещения выбирать не из всего множества, а из диапазона между срезом и заданной датой.

Я буду крайне благодарен за любую положительную идею и конструктивную критику. Задача уже немного надоела, но надо сделать.
13 июл 18, 18:27    [21569743]     Ответить | Цитировать Сообщить модератору
 Re: Исключения vs коды возвратов  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 38643
ВМоисеев
Я буду крайне благодарен за любую положительную идею и конструктивную критику. Задача уже немного надоела, но надо сделать.
тема топика совсе другая.
13 июл 18, 18:39    [21569767]     Ответить | Цитировать Сообщить модератору
 Re: Исключения vs коды возвратов  [new]
ViPRos
Member

Откуда:
Сообщений: 9658
ВМоисеев,

сколько таких объектов и как часто приходят извещения (что такое?)
13 июл 18, 18:43    [21569774]     Ответить | Цитировать Сообщить модератору
 Re: Исключения vs коды возвратов  [new]
hVostt
Member

Откуда:
Сообщений: 16272
skyANA
Конечно статья не убидительна, ведь ты её читал по диагонали судя по тому, что приводишь пример того, как типа должно быть ровно такой, с чего она начинается


Я не нашёл недостающие части, которые потом воткнули в fluent цепочку вызовов делегатов. Ну и решил исправить обратно именно результат.
13 июл 18, 19:28    [21569830]     Ответить | Цитировать Сообщить модератору
 Re: Исключения vs коды возвратов  [new]
hVostt
Member

Откуда:
Сообщений: 16272
skyANA
https://enterprisecraftsmanship.com/2015/02/26/exceptions-for-flow-control-in-c/


Согласен с исследованиями и выводами. И к чему это в данном контексте?
13 июл 18, 19:35    [21569835]     Ответить | Цитировать Сообщить модератору
 Re: Исключения vs коды возвратов  [new]
ВМоисеев
Member

Откуда: Редкино
Сообщений: 2013
>ViPRos, сегодня, 18:43 [21569774]
>сколько таких объектов и как часто приходят извещения (что такое?)
Нужных решаемой задаче объектов - несколько сотен, нужных задаче извещений (документов) думаю в пределах десятка тысяч в год.
Беда в том что объекты и извещения не разбиты по группам, а свалены в одну кучу, а всевозможных объектов в системе десятки (а может и сотни) тысяч. Общее количество приходящих и отправляемых извещений в год я не знаю. Но они копятся.
13 июл 18, 19:39    [21569837]     Ответить | Цитировать Сообщить модератору
 Re: Исключения vs коды возвратов  [new]
ViPRos
Member

Откуда:
Сообщений: 9658
ВМоисеев,

Ну, если бы просто рассказал о проблеме (на языке предметной области) возможно чем то помогли, но ты описываешь свое решение. :(
13 июл 18, 21:06    [21569919]     Ответить | Цитировать Сообщить модератору
 Re: Исключения vs коды возвратов  [new]
skyANA
Member

Откуда: Зеленоград
Сообщений: 26878
ВМоисеев
>skyANA, сегодня, 17:17 [21569592]
>Простите, а что Вы в базе храните?
На данный момент занимаюсь ГИС. Значит как минимум у объектов есть географические координаты.
Конкретнее - есть задача отображения положения объектов на географической карте в заданное время.
1. Есть объекты и их состояние (положение на карте)
2. Есть документы (извещения), которые меняют состояние объектов.
3. В процессе развития, объекты могут появляться или пропадать.
4. Одним из параметров извещения является время.
Попытка решения в лоб - ищется группа извещений, время которых меньше заданного, а группе ищутся с максимальным временем - оказалась не состоятельной. Задача перешла из режима отчетного документа в интерактивный режим. А здесь присутствует фактор времени. Десятки минут не катят.
Пока ничего лучшего не придумал, кроме как строить в дополнительной таблицы временные срезы и извещения выбирать не из всего множества, а из диапазона между срезом и заданной датой.

Я буду крайне благодарен за любую положительную идею и конструктивную критику. Задача уже немного надоела, но надо сделать.
но при этом "С Entity и списком сущностей работает класс панели (UserControl), там они и определяются. И Entity не выносится за пределы панели"

То есть объекты, что Вы храните в базе, это не сущности Вашей предметной области?
Или у Вас есть такие сущности, есть сякие. Одни обзываются Entity, другие иначе?
17 июл 18, 15:18    [21578002]     Ответить | Цитировать Сообщить модератору
 Re: Исключения vs коды возвратов  [new]
ВМоисеев
Member

Откуда: Редкино
Сообщений: 2013
>skyANA, сегодня, 15:18 [21578002]
>Или у Вас есть такие сущности, есть сякие. Одни обзываются Entity, другие иначе?
Да, именно так.
Вот простой пример, с одной сущностью:
namespace ns_ГИС {
  public partial class uc_СрезТБ : UserControl, I_Плитка {
    public row_Entity xrow, yrow;
    ObservableCollection<row_Entity> oc_Entity = new ObservableCollection<row_Entity>();  //-- Показываем в DataGrid 
    List<row_Entity> lst_Entity; //-- Временное хранение выборки
    OracleParameter[] asp;
    . . .
  //-- Класс, что ассоциируется с выборкой из временного среза и выборкой по извещениям
  public class row_Entity {
    public row_Entity(
       . . .   
       string _rn,
       DateTime _datesre
    ) {
    . . .

Запрос на формирование выборки извещений:
   .  .  .
  //-- Загружаем новейшие извещения выделенного диапазона
  lst_Entity = null; lst_Entity = new List<row_Entity>();
  asp = new OracleParameter[3] {
     new OracleParameter("cur_viborka", OracleDbType.Cursor, ParameterDirection.Output),
     new OracleParameter("x_dt_srez_new", dt_srez_new),
     new OracleParameter("x_dt_srez_old", dt_srez_min)
  };
  await Task.Run(() => wsp.Entity_SP("NCUYAO_GIS.Srez_Dop", wsp.sp_Sel, asp, RowToEntityIzv));
  if (wsp.wspErr != null) goto mp1;
   .  .  .
Примерно вот так формируем выборку из извещений.
Так отражаем её строку на сущность:
    //-- Строку выбоки из таблиц базы данных отражаем на entity 
    private void RowToEntityIzv(IDataRecord record) {
      xrow = new row_Entity() {
        . . .
        dateizm = record.GetDateTime(6),
        rn = record.GetString(7),
        datesre = dt_srez_new
      };
       lst_Entity?.Add(xrow);
    }
17 июл 18, 19:00    [21578843]     Ответить | Цитировать Сообщить модератору
 Re: Исключения vs коды возвратов  [new]
Roman Mejtes
Member

Откуда: г. Пермь
Сообщений: 3604
жесть
17 июл 18, 22:39    [21579249]     Ответить | Цитировать Сообщить модератору
 Re: Исключения vs коды возвратов  [new]
skyANA
Member

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

и что же означает на Вашем языке "Entity не выносится за пределы панели"?
я вижу, что это публичный класс на весь Ваш ГИС...
18 июл 18, 13:08    [21580889]     Ответить | Цитировать Сообщить модератору
 Re: Исключения vs коды возвратов  [new]
skyANA
Member

Откуда: Зеленоград
Сообщений: 26878
ВМоисеев
>skyANA, сегодня, 15:18 [21578002]
>Или у Вас есть такие сущности, есть сякие. Одни обзываются Entity, другие иначе?
Да, именно так.
Вот простой пример, с одной сущностью:
namespace ns_ГИС {
  public partial class uc_СрезТБ : UserControl, I_Плитка {
    public row_Entity xrow, yrow;
    ObservableCollection<row_Entity> oc_Entity = new ObservableCollection<row_Entity>();  //-- Показываем в DataGrid 
    List<row_Entity> lst_Entity; //-- Временное хранение выборки
    OracleParameter[] asp;
    . . .
  //-- Класс, что ассоциируется с выборкой из временного среза и выборкой по извещениям
  public class row_Entity {
    public row_Entity(
       . . .   
       string _rn,
       DateTime _datesre
    ) {
    . . .


Запрос на формирование выборки извещений:
   .  .  .
  //-- Загружаем новейшие извещения выделенного диапазона
  lst_Entity = null; lst_Entity = new List<row_Entity>();
  asp = new OracleParameter[3] {
     new OracleParameter("cur_viborka", OracleDbType.Cursor, ParameterDirection.Output),
     new OracleParameter("x_dt_srez_new", dt_srez_new),
     new OracleParameter("x_dt_srez_old", dt_srez_min)
  };
  await Task.Run(() => wsp.Entity_SP("NCUYAO_GIS.Srez_Dop", wsp.sp_Sel, asp, RowToEntityIzv));
  if (wsp.wspErr != null) goto mp1;
   .  .  .

Примерно вот так формируем выборку из извещений.
Так отражаем её строку на сущность:
    //-- Строку выбоки из таблиц базы данных отражаем на entity 
    private void RowToEntityIzv(IDataRecord record) {
      xrow = new row_Entity() {
        . . .
        dateizm = record.GetDateTime(6),
        rn = record.GetString(7),
        datesre = dt_srez_new
      };
       lst_Entity?.Add(xrow);
    }

А покажите пожалуйста списко using-ов, используемых классом uc_СрезТБ.
18 июл 18, 14:24    [21581317]     Ответить | Цитировать Сообщить модератору
 Re: Исключения vs коды возвратов  [new]
skyANA
Member

Откуда: Зеленоград
Сообщений: 26878
ВМоисеев
lst_Entity?.Add(xrow)

А что, может случиться, что lst_Entity будет null?
18 июл 18, 14:29    [21581344]     Ответить | Цитировать Сообщить модератору
 Re: Исключения vs коды возвратов  [new]
ViPRos
Member

Откуда:
Сообщений: 9658
skyANA,

да просто надо посмотреть что это за "row_Entity" и все станет ясно
18 июл 18, 15:18    [21581616]     Ответить | Цитировать Сообщить модератору
 Re: Исключения vs коды возвратов  [new]
skyANA
Member

Откуда: Зеленоград
Сообщений: 26878
ViPRos,

что конкретно станет ясно?
18 июл 18, 15:21    [21581638]     Ответить | Цитировать Сообщить модератору
 Re: Исключения vs коды возвратов  [new]
ViPRos
Member

Откуда:
Сообщений: 9658
skyANA
ViPRos,

что конкретно станет ясно?

зачем вся эта белиберда
18 июл 18, 15:48    [21581734]     Ответить | Цитировать Сообщить модератору
 Re: Исключения vs коды возвратов  [new]
skyANA
Member

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

а скажите ещё вот что: класс панели (UserControl) к какому из описанных Вами выше 5-ти слоёв относится?
18 июл 18, 15:50    [21581748]     Ответить | Цитировать Сообщить модератору
 Re: Исключения vs коды возвратов  [new]
skyANA
Member

Откуда: Зеленоград
Сообщений: 26878
hVostt
skyANA
https://enterprisecraftsmanship.com/2015/02/26/exceptions-for-flow-control-in-c/


Согласен с исследованиями и выводами. И к чему это в данном контексте?

К тому, ч то там один из выводов - это:
If you know how to deal with exceptions a library throws, catch them at the lowest level possible.
18 июл 18, 16:00    [21581784]     Ответить | Цитировать Сообщить модератору
 Re: Исключения vs коды возвратов  [new]
hVostt
Member

Откуда:
Сообщений: 16272
skyANA
If you know how to deal with exceptions a library throws, catch them at the lowest level possible.


If you know how to deal with exceptions a library throws, чего не выделил? )
Засунуть пойманное исключение внутрь OperationResult это из разряда shut up, I know what I'm doing
18 июл 18, 18:18    [21582192]     Ответить | Цитировать Сообщить модератору
 Re: Исключения vs коды возвратов  [new]
skyANA
Member

Откуда: Зеленоград
Сообщений: 26878
hVostt
skyANA
If you know how to deal with exceptions a library throws, catch them at the lowest level possible.


If you know how to deal with exceptions a library throws, чего не выделил? )

Оставил оригинальное выделение, что в статье, прикинь
18 июл 18, 19:02    [21582312]     Ответить | Цитировать Сообщить модератору
 Re: Исключения vs коды возвратов  [new]
ВМоисеев
Member

Откуда: Редкино
Сообщений: 2013
>skyANA, сегодня, 13:08 [21580889]
>...я вижу, что это публичный класс на весь Ваш ГИС...
Вы не правы:
using Devart.Data.Oracle;
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Data;
using System.Linq;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;

namespace ns_ГИС {
  public partial class uc_СНВсрезТБ : UserControl, I_Плитка {
    public row_Entity xrow, yrow;
    ObservableCollection<row_Entity> oc_Entity = new ObservableCollection<row_Entity>();  //-- Показываем в DataGrid 
    List<row_Entity> lst_Entity; //-- Временное хранение выборки
    OracleParameter[] asp;
    . . .     
    //-- Класс, что ассоциируется с выборкой из временного среза и выборкой по извещениям
    public class row_Entity {
      public row_Entity(
        bool _chb_Entity,
        string _pk,
        string _namvrr,
        string _numdoc,
        string _mesto,
        string _lat,
        string _lng,
        DateTime _dateizm,
        string _rn,
        DateTime _datesre
      ) {
        this.chb_Entity    = _chb_Entity;
        this.pk     = _pk;
        this.namvrr = _namvrr;
        this.numdoc = _numdoc;
        this.mesto = _mesto;
        this.lat = _lat;
        this.lng = _lng;
        this.dateizm = _dateizm;
        this.rn = _rn;
        this.datesre = _datesre;
      }
      public row_Entity() {; }
      public bool chb_Entity { get; set; }
      public string pk { get; set; }
      public string namvrr { get; set; }
      public string numdoc { get; set; }
      public string mesto { get; set; }
      public string lat { get; set; }
      public string lng { get; set; }
      public DateTime dateizm { get; set; }
      public string rn { get; set; }
      public DateTime datesre { get; set; }
    }
    public uc_СНВсрезТБ(MainWindow omw, Object oUC) {
      InitializeComponent();
      . . .
      dpr_Срез.SelectedDate = DateTime.Now; 
    }
    . . . 


А что, может случиться, что lst_Entity будет null?
Список не нужен.
18 июл 18, 21:53    [21582714]     Ответить | Цитировать Сообщить модератору
 Re: Исключения vs коды возвратов  [new]
Cat2
Member

Откуда: Petroskoi, Karjala
Сообщений: 145675
ВМоисеев
>skyANA, сегодня, 13:08 [21580889]
>...я вижу, что это публичный класс на весь Ваш ГИС...
Вы не правы:
using Devart.Data.Oracle;
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Data;
using System.Linq;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;

namespace ns_ГИС {
  public partial class uc_СНВсрезТБ : UserControl, I_Плитка {
    public row_Entity xrow, yrow;
    ObservableCollection<row_Entity> oc_Entity = new ObservableCollection<row_Entity>();  //-- Показываем в DataGrid 
    List<row_Entity> lst_Entity; //-- Временное хранение выборки
    OracleParameter[] asp;
    . . .     
    //-- Класс, что ассоциируется с выборкой из временного среза и выборкой по извещениям
    public class row_Entity {
      public row_Entity(
        bool _chb_Entity,
        string _pk,
        string _namvrr,
        string _numdoc,
        string _mesto,
        string _lat,
        string _lng,
        DateTime _dateizm,
        string _rn,
        DateTime _datesre
      ) {
        this.chb_Entity    = _chb_Entity;
        this.pk     = _pk;
        this.namvrr = _namvrr;
        this.numdoc = _numdoc;
        this.mesto = _mesto;
        this.lat = _lat;
        this.lng = _lng;
        this.dateizm = _dateizm;
        this.rn = _rn;
        this.datesre = _datesre;
      }
      public row_Entity() {; }
      public bool chb_Entity { get; set; }
      public string pk { get; set; }
      public string namvrr { get; set; }
      public string numdoc { get; set; }
      public string mesto { get; set; }
      public string lat { get; set; }
      public string lng { get; set; }
      public DateTime dateizm { get; set; }
      public string rn { get; set; }
      public DateTime datesre { get; set; }
    }
    public uc_СНВсрезТБ(MainWindow omw, Object oUC) {
      InitializeComponent();
      . . .
      dpr_Срез.SelectedDate = DateTime.Now; 
    }
    . . . 



А что, может случиться, что lst_Entity будет null?
Список не нужен.

Вы бы оставили нужное для понимания. а не все сто тыщь строк тащить
18 июл 18, 23:49    [21582986]     Ответить | Цитировать Сообщить модератору
 Re: Исключения vs коды возвратов  [new]
ВМоисеев
Member

Откуда: Редкино
Сообщений: 2013
>Cat2, сегодня, 23:49 [21582986]
>Вы бы оставили нужное для понимания. а не все сто тыщь строк тащить
Посмотрите на это, это, это, это, а Вы то зачем сто тыщь строк тащите, можно и ссылку.
Вы сами то понимаете, что это …не публичный класс на весь Ваш ГИС..
19 июл 18, 00:08    [21583033]     Ответить | Цитировать Сообщить модератору
 Re: Исключения vs коды возвратов  [new]
skyANA
Member

Откуда: Зеленоград
Сообщений: 26878
ВМоисеев
>skyANA, сегодня, 13:08 [21580889]
>...я вижу, что это публичный класс на весь Ваш ГИС...
Вы не правы:
using Devart.Data.Oracle;
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Data;
using System.Linq;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;

namespace ns_ГИС {
  public partial class uc_СНВсрезТБ : UserControl, I_Плитка {
    public row_Entity xrow, yrow;
    ObservableCollection<row_Entity> oc_Entity = new ObservableCollection<row_Entity>();  //-- Показываем в DataGrid 
    List<row_Entity> lst_Entity; //-- Временное хранение выборки
    OracleParameter[] asp;
    . . .     
    //-- Класс, что ассоциируется с выборкой из временного среза и выборкой по извещениям
    public class row_Entity {
      public row_Entity(
        bool _chb_Entity,
        string _pk,
        string _namvrr,
        string _numdoc,
        string _mesto,
        string _lat,
        string _lng,
        DateTime _dateizm,
        string _rn,
        DateTime _datesre
      ) {
        this.chb_Entity    = _chb_Entity;
        this.pk     = _pk;
        this.namvrr = _namvrr;
        this.numdoc = _numdoc;
        this.mesto = _mesto;
        this.lat = _lat;
        this.lng = _lng;
        this.dateizm = _dateizm;
        this.rn = _rn;
        this.datesre = _datesre;
      }
      public row_Entity() {; }
      public bool chb_Entity { get; set; }
      public string pk { get; set; }
      public string namvrr { get; set; }
      public string numdoc { get; set; }
      public string mesto { get; set; }
      public string lat { get; set; }
      public string lng { get; set; }
      public DateTime dateizm { get; set; }
      public string rn { get; set; }
      public DateTime datesre { get; set; }
    }
    public uc_СНВсрезТБ(MainWindow omw, Object oUC) {
      InitializeComponent();
      . . .
      dpr_Срез.SelectedDate = DateTime.Now; 
    }
    . . . 
О, дак это вложенный тип.

Но у него модификатор доступа public, и у контейнера public, то есть бери и пользуйся:
var entity = new ns_ГИС.uc_СНВсрезТБ.row_Entity();

И в чём тут смысл? Вы ведь не используете в нём переменные и методы контейнера.
И зачем в нём определены конструкторы, когда все свойтва имеют публичные сеттеры?

ВМоисеев
А что, может случиться, что lst_Entity будет null?
Список не нужен.
Иначе задам вопрос: разве может случиться так, что lst_Entity будет null в момент вызова метода Add?
19 июл 18, 09:01    [21583428]     Ответить | Цитировать Сообщить модератору
 Re: Исключения vs коды возвратов  [new]
skyANA
Member

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

если понядобится формировать отчёт и отправлять его на e-mail заинтересованным лицам к примеру каждый понедельник автоматически, не через интерфейс программы,
то Вы ещё один класс заведёте, аналогичный row_Entity?
19 июл 18, 09:07    [21583437]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: Ctrl  назад   1 .. 8 9 10 11 12 13 14 [15] 16 17   вперед  Ctrl
Все форумы / WinForms, .Net Framework Ответить