powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Датасет, свой класс или что-то еще
28 сообщений из 28, показаны все 2 страниц
Датасет, свой класс или что-то еще
    #37811458
Sergey S
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вопрос скорее не в тему, не нашел куда написать.
Есть простая программа для работы с базой, 4-5 таблиц, отчеты, настройки. логика отчетов сидит в процедурах на SQL Server-е.
Писали все похожие программы (весь наш небольшой отдел) в процедурном стиле - т.е. "exec name..." это все в не типизированный датасет или сразу в грид, максимум биндинг к контролам. Была одна DLL для подключения к базе и ведения лога. Суть вопроса как лучше проектировать подобные мелкие рабочие проекты - Первое что вижу - это использовать типизированный датасет, но стиль от этого не поменяется. Второе через свои классы моделирующие объекты, их выводить в гриды, т.е. уже ближе к ооп. Еще NHibernate - до него еще не добрался, толком ни чего не знаю, но если тема подойдет то буду разбираться. Сейчас разбираю шаблоны проектирования, но еще не дошел до той стадии чтоб знать где применить. В общем подскажите на что следует потратить время чтобы это можно было применить на работе. (SQL Server, филиалы, задаи в основном по анализу основной рабочей базы и внутренняя бухгалтерия)
...
Рейтинг: 0 / 0
Датасет, свой класс или что-то еще
    #37972798
ToxDenton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хороший вопрос, мне бы тоже, было интересно узнать.
...
Рейтинг: 0 / 0
Датасет, свой класс или что-то еще
    #37986516
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Sergey SПисали все похожие программы (весь наш небольшой отдел) в процедурном стиле - т.е. "exec name..." это все в не типизированный датасет или сразу в грид,
Странно было бы, если бы в типизированый датсет, который является классом. И уже по нему определяются датасеты.

Многогодовой спор. Использовать типизированые датасеты или нет?
Я за них.
Сразу в грид - можно, если грид только для чтения. В репорты можно тоже сразу.
Если данные надо редактировать, то датасет предоставляет механизмы, которых нет при использовании других способов
...
Рейтинг: 0 / 0
Датасет, свой класс или что-то еще
    #37986804
SolYUtor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sergey S,

если чистый CRUD - то можно и датасет. Если в приложении есть логика - лучше NHibernate или другой маппер.
...
Рейтинг: 0 / 0
Датасет, свой класс или что-то еще
    #37987126
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
SolYUtorЕсли в приложении есть логика - лучше NHibernate или другой маппер.
Логика в приложении - моветон
...
Рейтинг: 0 / 0
Датасет, свой класс или что-то еще
    #37987235
SolYUtor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cat2Логика в приложении - моветон
Чё правда что ли? Даже ни одной логической конструкции нельзя?
...
Рейтинг: 0 / 0
Датасет, свой класс или что-то еще
    #37987324
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cat2SolYUtorЕсли в приложении есть логика - лучше NHibernate или другой маппер.
Логика в приложении - моветон
Логика в приложении - бест практис. Забудь о логике в хранимках, это не логика, а ошметки логики из кусков сиквел кода, обернутые в транзакцию.
Про модульное тестирование что-нить слыхал?
...
Рейтинг: 0 / 0
Датасет, свой класс или что-то еще
    #37987956
Фотография pation
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУCat2пропущено...

Логика в приложении - моветон
Логика в приложении - бест практис. Забудь о логике в хранимках, это не логика, а ошметки логики из кусков сиквел кода, обернутые в транзакцию.
Про модульное тестирование что-нить слыхал?

согласен, это не есть задача базы данных
...
Рейтинг: 0 / 0
Датасет, свой класс или что-то еще
    #38012210
Sergey S
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А как решаются вопросы производительности?
К примеру сейчас есть одна программа по расчету премии - тут задействована своя с-ма бюджетирования
Конечный результат выводится в excel-ий файлик для каждого филиала по 4 листа разных таблиц - это все выдается несколькими процедурами, строится довольно быстро, т.к. вся логика сидит в процедуре и выполняется на хорошем сервере...
Если загнать логику в клиента.... нада попробовать.... скажите кто примерно такого уровня сложности (не сильно простую) логику пробовал - нормально будет?
И начать рекомендуете с NHibernate или просто в своих объектах логику заложить?
...
Рейтинг: 0 / 0
Датасет, свой класс или что-то еще
    #38012729
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sergey S,
какая еще сложность при расчете премий?
...
Рейтинг: 0 / 0
Датасет, свой класс или что-то еще
    #38012946
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sergey SА как решаются вопросы производительности?
К примеру сейчас есть одна программа по расчету премии - тут задействована своя с-ма бюджетирования
Конечный результат выводится в excel-ий файлик для каждого филиала по 4 листа разных таблиц - это все выдается несколькими процедурами, строится довольно быстро, т.к. вся логика сидит в процедуре и выполняется на хорошем сервере...
Если загнать логику в клиента.... нада попробовать.... скажите кто примерно такого уровня сложности (не сильно простую) логику пробовал - нормально будет?
И начать рекомендуете с NHibernate или просто в своих объектах логику заложить?При правильном применении Linq2Sql отличие в производительности от варианта на хранимых процедурах будет минимальным, а в некоторых случаях даже быстрее.
...
Рейтинг: 0 / 0
Датасет, свой класс или что-то еще
    #38012952
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViPRosSergey S,
какая еще сложность при расчете премий?Насчитать себе нужную сумму, чтобы никто не заметил. :-)
...
Рейтинг: 0 / 0
Датасет, свой класс или что-то еще
    #38013496
sphinx_mv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУCat2пропущено...

Логика в приложении - моветон
Логика в приложении - бест практис.

Вас не смущает тот факт, что истина на самом деле где-то по середине?
МСУЗабудь о логике в хранимках, это не логика, а ошметки логики из кусков сиквел кода, обернутые в транзакцию.

Не умеешь готовить - не берись.
МСУПро модульное тестирование что-нить слыхал?
О, да-да! Типа, хранимые процедуры не поддаются тестированию...
...
Рейтинг: 0 / 0
Датасет, свой класс или что-то еще
    #38013507
SolYUtor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sphinx_mvО, да-да! Типа, хранимые процедуры не поддаются тестированию...
Теоретически возможно. Вопрос в трудозатратах. Для храмок слишком долго устанавливать контекст.
...
Рейтинг: 0 / 0
Датасет, свой класс или что-то еще
    #38013529
netivan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей К,

но все же она не на все способна, к сожалению.
...
Рейтинг: 0 / 0
Датасет, свой класс или что-то еще
    #38013724
sphinx_mv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SolYUtorsphinx_mvО, да-да! Типа, хранимые процедуры не поддаются тестированию...
Теоретически возможно.
Это возможно не только теоретически, но и практически.
И не только в "ручном" режиме: список фреймворков , где можно получить ссылки на тест-фреймворки в том числе и для SQL-серверов - как минимум, для Oracle, MSSQL, MySQL, PostgreSQL...
SolYUtorВопрос в трудозатратах. Для храмок слишком долго устанавливать контекст.
IMHO, одинаковая функциональность примерно одинакова по трудозатратам на тестирование. И установление контекста требует примерно тех же усилий.
...
Рейтинг: 0 / 0
Датасет, свой класс или что-то еще
    #38014026
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
netivanАлексей К,

но все же она не на все способна, к сожалению.Её его возможности в последнее время весьма активно развиваются. Уже имеющихся возможностей вполне достаточно. Недостающие возможности ( вроде рекурсивных запросов ) легко выносятся во View в БД.

В итоге имеем в сервере приложений сопоставимые с хранимыми процедурами возможности + все возможности C# и его библиотек. Что как минимум позволит работать с данными из разных БД, веб-сервисов и т. п. Если даже сегодня это не надо, в дальнейшем такая необходимость весьма вероятна. Пусть кому-то удобно "по-старинке" иметь логику в ХП, но решение с логикой в LINQ на сервере приложений, как минимум, тоже имеет право на жизнь.

По некоторым параметрам LINQ несколько удобнее SQL, взять те же ассоциации vs join, let vs вложенный запрос и т. д. Хотя и недостатки тоже есть. Истина как всегда где-то посередине...
...
Рейтинг: 0 / 0
Датасет, свой класс или что-то еще
    #38014213
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУДалеко на такой "логике" не уедешь. Размазня без ООП - это не логика, это линейный лапшекод :)Линейный лапшекод лучше ООП-лапшекода. Его проще разгребать. Так что тут тоже нужно без фанатизма. :-)
...
Рейтинг: 0 / 0
Датасет, свой класс или что-то еще
    #38014225
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КЛинейный лапшекод лучше ООП-лапшекода. Его проще разгребать. Так что тут тоже нужно без фанатизма. :-)
Если у нас десяток строк кода, то соглашусь. Не доводилось работать с хранимыми процедурами под 1000 строк и более? Причем их таких несколько штук под конкретную "задачу", примерно одинкаковых по смыслу. И за отсутствием наследования, прилодилось писать вспомоготальные общие хранимки, которые нужно было вкорячить в те десять. Бррр, накую такую "бизнес-логику"
...
Рейтинг: 0 / 0
Датасет, свой класс или что-то еще
    #38014237
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУАлексей КЛинейный лапшекод лучше ООП-лапшекода. Его проще разгребать. Так что тут тоже нужно без фанатизма. :-)
Если у нас десяток строк кода, то соглашусь. Не доводилось работать с хранимыми процедурами под 1000 строк и более? Причем их таких несколько штук под конкретную "задачу", примерно одинкаковых по смыслу. И за отсутствием наследования, прилодилось писать вспомоготальные общие хранимки, которые нужно было вкорячить в те десять. Бррр, накую такую "бизнес-логику" Видимо MSSQL? Там да, с этим хреново, нет пакетов, "как в Ёракле" :-)
...
Рейтинг: 0 / 0
Датасет, свой класс или что-то еще
    #38014274
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КВидимо MSSQL? Там да, с этим хреново, нет пакетов, "как в Ёракле" :-)
Опять двадцать пять :) Не нужно концепцию оракуля перекладывать на сиквел, не нужны сиквелу пакеты.
Да и сам пакет не решит ничего в разрезе наследования, просто перекладывание гавна по кучкам, не более того.
...
Рейтинг: 0 / 0
Датасет, свой класс или что-то еще
    #38014276
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУНе доводилось работать с хранимыми процедурами под 1000 строк и более? Причем их таких несколько штук под конкретную "задачу", примерно одинкаковых по смыслу.

Да, Алексей, самое главное - как насчет документирования такого "кода"? :)
...
Рейтинг: 0 / 0
Датасет, свой класс или что-то еще
    #38014386
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУОпять двадцать пять :) Не нужно концепцию оракуля перекладывать на сиквел, не нужны сиквелу пакеты.Нужно. Чтобы не было 100500 хранимых процедур с дикими префиксами в именах, чтобы хоть как-то можно было в них ориентироваться.

МСУДа и сам пакет не решит ничего в разрезе наследования, просто перекладывание гавна по кучкам, не более того.Сущности наследовать можно во вьюхах через select * from . Полиморфизм - а нужен ли он тут?
...
Рейтинг: 0 / 0
Датасет, свой класс или что-то еще
    #38014389
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУМСУНе доводилось работать с хранимыми процедурами под 1000 строк и более? Причем их таких несколько штук под конкретную "задачу", примерно одинкаковых по смыслу.

Да, Алексей, самое главное - как насчет документирования такого "кода"? :)Рефакторить надо. Производить "выделение метода" по Фаулеру.
...
Рейтинг: 0 / 0
Датасет, свой класс или что-то еще
    #38014823
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КНужно. Чтобы не было 100500 хранимых процедур с дикими префиксами в именах, чтобы хоть как-то можно было в них ориентироваться.
А вот нечего плодить такой говно-зоопарк. А то понаплодят гумна, а потом там еще и ориентироваться нужно. Кстати, тема пакетов в сиквеле - баян. В топку пакеты.

Алексей КСущности наследовать можно во вьюхах через select * from . Полиморфизм - а нужен ли он тут?
Мне страшно представить, что у тебя потом там с планом выполнения запросов будет, когда ты понагородишь огороды "наследования". DBA кастрирует. Во-вторых, наследование через вьюхи - это просто жесть :) В-третьих, наследование нужно не только в отображении, но и во внутренней логике (например, расчет зп, отпусков, увольнений и т.д. - какие в жопу вьюхи?). Полиморфизм нужен, Леша, нужен.

Алексей КРефакторить надо. Производить "выделение метода" по Фаулеру.
Причем тут рефакторить? Я спрашиваю о документировании всего этого безобразия. Неужели о чем-то невообразимо нереальном вещаю? Вот уйдет твоя команда обезьянок, придут новые - начинаем с перелопачивания и изучения кода по камментам? :)
...
Рейтинг: 0 / 0
Датасет, свой класс или что-то еще
    #38015073
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУАлексей КНужно. Чтобы не было 100500 хранимых процедур с дикими префиксами в именах, чтобы хоть как-то можно было в них ориентироваться.
А вот нечего плодить такой говно-зоопарк. А то понаплодят гумна, а потом там еще и ориентироваться нужно.А что делать, пакетов-то нет. Приходится плодить. :-) Отсутствие пакетов - одна из причин, почему мы отказались от логики в MSSQL в пользу сервера приложений.
МСУКстати, тема пакетов в сиквеле - баян.Я в курсе. :-) Просто удивляет упорное нежелание Microsoft их делать. :-)
МСУВ топку пакеты.Нет! :-)
МСУАлексей КСущности наследовать можно во вьюхах через select * from . Полиморфизм - а нужен ли он тут?
Мне страшно представить, что у тебя потом там с планом выполнения запросов будет, когда ты понагородишь огороды "наследования".Оптимизатор запросов MSSQL порой просто творит чудеса. Большой респект от меня его авторам. Вы ещё наши запросы, рожаемые EF, не видели. :-) И ничё, планы выполнения мало отличаются от рукописных запросов, несмотря на обилие лишних вложенностей и прочего мусора.
МСУDBA кастрирует.Я как-то рассказывал, с какими админами приходится иметь дело. Так что не кастрирует. :-) Все планы выполнения по возможности оптимизируются разработчиками на этапе разработки/опытного внедрения. DBA в этом участия не принимают.
МСУВо-вторых, наследование через вьюхи - это просто жесть :)"На безрыбье и рак рыба" (с) :-)
МСУВ-третьих, наследование нужно не только в отображении, но и во внутренней логике (например, расчет зп, отпусков, увольнений и т.д. - какие в жопу вьюхи?). Полиморфизм нужен, Леша, нужен.Я не против. :-) Просто нам пока не требовалось.
МСУАлексей КРефакторить надо. Производить "выделение метода" по Фаулеру.
Причем тут рефакторить? Я спрашиваю о документировании всего этого безобразия. Неужели о чем-то невообразимо нереальном вещаю? Вот уйдет твоя команда обезьянок, придут новые - начинаем с перелопачивания и изучения кода по камментам? :)Ну сначала рефакторить, потом документировать. В противном случае вариантов кроме коментариев внутри процедур не вижу. Зато сэкономили на разработке, эффективный менеджмент, хуле... Работает да и ладно, и нечего туда лазить. :-)
...
Рейтинг: 0 / 0
Датасет, свой класс или что-то еще
    #38015099
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КА что делать, пакетов-то нет. Приходится плодить. :-) Отсутствие пакетов - одна из причин, почему мы отказались от логики в MSSQL в пользу сервера приложений.
А не нужно плодить, нужно писать хранимые процедуры только тогда, когда действительно без них никак. А то понаплодят банальных крудов, понаввинчивают туда костылей со временем, всё это разростется как снежный ком - сиди потом и репу чеши, как это всё в порядок привести :) Пакеты тут делу не помогут, если логика - то полноценная доменная модель.
P.S. Логики не может быть в БД впринципе, это не логика - а ее части, размазанные по говнохранимкам.

Алексей КЯ в курсе. :-) Просто удивляет упорное нежелание Microsoft их делать. :-)
Автоматизация хаоса? :)

Алексей КНет! :-)
Да, етить!

Алексей КОптимизатор запросов MSSQL порой просто творит чудеса. Большой респект от меня его авторам. Вы ещё наши запросы, рожаемые EF, не видели. :-) И ничё, планы выполнения мало отличаются от рукописных запросов, несмотря на обилие лишних вложенностей и прочего мусора.
Он не всегда творит чудеса, бывает так закрутит, что даже хинты не помогут :) Встречался я с такими поделиями...

Алексей КЯ как-то рассказывал, с какими админами приходится иметь дело. Так что не кастрирует. :-) Все планы выполнения по возможности оптимизируются разработчиками на этапе разработки/опытного внедрения. DBA в этом участия не принимают.
Ну хотя бы уже на этапе эксплуатации есть кому взять хлыст и начать рядить ряды кодеманок? :)

Алексей К"На безрыбье и рак рыба" (с) :-)
А некуй сувать своё удилище туда, где нихрена не ловится
Моллюсков ловить разве что?

Алексей КЯ не против. :-) Просто нам пока не требовалось.
Ну сам же говорил о плюсах спагетти-кода. Получай! )

Алексей КНу сначала рефакторить, потом документировать. В противном случае вариантов кроме коментариев внутри процедур не вижу. Зато сэкономили на разработке, эффективный менеджмент, хуле... Работает да и ладно, и нечего туда лазить. :-)
Вот и я про тоже. Комменты внутри лапшехранимок, конечно, не радость...
...
Рейтинг: 0 / 0
Датасет, свой класс или что-то еще
    #38015187
Фотография _=ДОБРЫНЯ=_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cat2Сразу в грид - можно, если грид только для чтения. В репорты можно тоже сразу.

Покажите пожалуйста пример - как можно выгружать прямо вгрид?

Модератор: Топик был основательно почищен, причём пришлось удалять и посты с ценным контентом, но, к сожалению, неприемлемые по форме. Просьба к участникам впредь воздерживаться от личных выпадов, это идёт во вред форуму.
...
Рейтинг: 0 / 0
28 сообщений из 28, показаны все 2 страниц
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Датасет, свой класс или что-то еще
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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