powered by simpleCommunicator - 2.0.58     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Организация запросов из десктопного клиента к субд
248 сообщений из 248, показаны все 10 страниц
Организация запросов из десктопного клиента к субд
    #38052109
Korbanz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте. Подскажите как лучше организовать запросы клиента (на C#) к бд (postgresql):
написать хранимые процедуры и вызывать их из клиента или зашивать sql запросы в сам клиент(этого делать не хочется) или есть ещё какие-то способы?
...
Рейтинг: 0 / 0
Организация запросов из десктопного клиента к субд
    #38052122
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Использовать ORM.
...
Рейтинг: 0 / 0
Организация запросов из десктопного клиента к субд
    #38052292
Korbanz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А производительность сильно падает по сравнению с хп?
...
Рейтинг: 0 / 0
Организация запросов из десктопного клиента к субд
    #38052307
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KorbanzА производительность сильно падает по сравнению с хп?
Очень сильно падает производительность. ХП выполняются по 1 сек., а уже через ORM время увеличивается до 10 сек.
Ну подумаешь, в 10 раз медленнее. Ничего страшного, зато тренд.
...
Рейтинг: 0 / 0
Организация запросов из десктопного клиента к субд
    #38052508
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Не все можно сделать с клиента хорошо.
Например, транзакции.

Хранимые процедуры всегда будут чуть быстрее, так как они уже откомпилированы и для них обязательно создан план запроса.
С хранимыми процедурами проще сделать разграничение прав пользователей
...
Рейтинг: 0 / 0
Организация запросов из десктопного клиента к субд
    #38052608
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cat2Не все можно сделать с клиента хорошо.
Например, транзакции."Волков бояться - в лес не ходить" (с)
Cat2Хранимые процедуры всегда будут чуть быстрее, так как они уже откомпилированы и для них обязательно создан план запроса.Планы динамических запросов больше не кэшируются? На свалку такую СУБД...
Cat2С хранимыми процедурами проще сделать разграничение прав пользователейС веб-сервисами проще сделать разграничение прав пользователей?
...
Рейтинг: 0 / 0
Организация запросов из десктопного клиента к субд
    #38052609
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУИспользовать ORM.LINQ2SQL!
...
Рейтинг: 0 / 0
Организация запросов из десктопного клиента к субд
    #38052619
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Алексей К"Волков бояться - в лес не ходить" (с)
Но все желательно иметь при себе ружье.
Других аргументов нет?

Алексей КПланы динамических запросов больше не кэшируются? На свалку такую СУБД...
Кэшируются, но гарантии нет

Алексей КС веб-сервисами проще сделать разграничение прав пользователей?
На веб-сервисах свет клином сошелся?
Да и с ними проще. Даются права на одну хранимую процедуру, а не на 10 таблиц в соединении. Гарантия, что клиент может сделать только то, что разрешено для пользователей.
...
Рейтинг: 0 / 0
Организация запросов из десктопного клиента к субд
    #38052622
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Алексей КМСУИспользовать ORM.LINQ2SQL!
Чем это отличается от написания текстов запросов в теле программы?
На сервер все равно уходит текст запроса, а не сама конструкция. Еще и время тратится на преобразование LINQ2SQL в текст
...
Рейтинг: 0 / 0
Организация запросов из десктопного клиента к субд
    #38052623
фиганыч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Korbanz,

wcf + хранимые процедуры.

почему wcf:
1. Можешь прикрутить SSL для клиент/серверного обмена
2. Можно разворачивать на IIS и юзать кэширование для сложных/долгих запросов.
3. Не нужно никого клиента баз данных на самом клиенте.
3. Ну и стандартные плюсы трехзвенки.

почему хранимые процедуры:
1. В опу запуск SQL с клиента рассадник sql-инъекций.
2. Статичный SQL запрос проще/лучше оптимизировать.
3. При обновлении структуры базы ты сразу же обновляешь запросы, а не выискиваешь эти запросы в коде клиента - причём некоторые запросы вылазят не сразу, а со временем.
4. Проще разграничивать права доступа - дал права на процедуры/пакеты, а не на таблицы/вьюхи.
...
Рейтинг: 0 / 0
Организация запросов из десктопного клиента к субд
    #38052626
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cat2Алексей Кпропущено...
LINQ2SQL!
Чем это отличается от написания текстов запросов в теле программы?Строгая типизация + LINQ удобнее чем SQL.

Например:
1. Ассоциации удобнее join-ов.
2. let удобнее вложенных запросов.

Cat2На сервер все равно уходит текст запроса, а не сама конструкция.Да.
Cat2Еще и время тратится на преобразование LINQ2SQL в текстВ нормальном LINQ-провайдере должно быть кэширование.
...
Рейтинг: 0 / 0
Организация запросов из десктопного клиента к субд
    #38052630
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cat2Алексей К"Волков бояться - в лес не ходить" (с)
Но все желательно иметь при себе ружье.
Других аргументов нет?Есть. Удобство TransactionScope (или самописного аналога, если боимся распределённых транзакций).

Cat2Алексей КПланы динамических запросов больше не кэшируются? На свалку такую СУБД...
Кэшируются, но гарантии нетКаких гарантий нет?

Cat2Алексей КС веб-сервисами проще сделать разграничение прав пользователей?
На веб-сервисах свет клином сошелся?Да.

Cat2Да и с ними проще. Даются права на одну хранимую процедуру, а не на 10 таблиц в соединении. Гарантия, что клиент может сделать только то, что разрешено для пользователей.Даются права на метод сервиса, "а не на 10 таблиц в соединении"?
...
Рейтинг: 0 / 0
Организация запросов из десктопного клиента к субд
    #38052636
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
фиганычwcf + хранимые процедуры.

...

4. Проще разграничивать права доступа - дал права на процедуры/пакеты, а не на таблицы/вьюхи.Вроде как 3-х звенка и использование системы безопасности СУБД - вещи взаимоисключающие. В противном случае придётся пожертвовать пулом соединений. Если конечно СУБД не умеет переключать контекст безопасности...
...
Рейтинг: 0 / 0
Организация запросов из десктопного клиента к субд
    #38052722
фиганыч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КВроде как 3-х звенка и использование системы безопасности СУБД - вещи взаимоисключающие. В противном случае придётся пожертвовать пулом соединений. Если конечно СУБД не умеет переключать контекст безопасности...

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

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

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

я, в первую очередь, рассматриваю защиту БД от клиентов, а здесь проще как раз вот так - один пользователь для разработчика/ов с ограниченными правами, другой для пользователей с ещё больше ограниченными правами - т.е. в идеале права на запуск процедур.
Вместо создания пользователя БД для каждого пользователя системы и назначением ему соответствующих прав.
Это накладывает некоторые усложнения для организации внутренней системы доступа, однако надёжно отгораживает системы друг от друга, к тому же собственную систему доступа так или иначе рисует каждый разработчик, да и в некоторых БД лицензирование идёт по количеству пользователей.
...
Рейтинг: 0 / 0
Организация запросов из десктопного клиента к субд
    #38052898
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Самая вменяемая масштабируемая архитектура безопасности - роли с правами хранятся в таблицах. Пользователи - либо так же табличные, либо виндовые. Виндовые - проще, они уже есть в AD, остается прицепить к ним роли с правами. Как частный вариант - роли выражаются в группах AD, но имеем головную боль в виде сисадминов, прибитых к конкретному апп, а это не совсем правильно. Мухи отдельно, котлеты отдельно. Сисадмины отдельно, апп админы отдельно.
Все потуги реализовать апп секурити средствами конкретной БД - дикое немасштабируемое зло.
...
Рейтинг: 0 / 0
Организация запросов из десктопного клиента к субд
    #38052903
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КМСУИспользовать ORM.LINQ2SQL!
Та я не против и энтити с хибом (платный дизайнер), главное шоп не ублюдочный кодефирст.
...
Рейтинг: 0 / 0
Организация запросов из десктопного клиента к субд
    #38052910
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
фиганычАлексей К,

я, в первую очередь, рассматриваю защиту БД от клиентов, а здесь проще как раз вот так - один пользователь для разработчика/ов с ограниченными правами, другой для пользователей с ещё больше ограниченными правами - т.е. в идеале права на запуск процедур.В идеале сервер БД нужно отделить от пользователей файрволом, а не давать им там права на какие-то процедуры.
...
Рейтинг: 0 / 0
Организация запросов из десктопного клиента к субд
    #38052912
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУАлексей Кпропущено...
LINQ2SQL!
Та я не против и энтити с хибом (платный дизайнер), главное шоп не ублюдочный кодефирст.Нука тиха там!
...
Рейтинг: 0 / 0
Организация запросов из десктопного клиента к субд
    #38052915
фиганыч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КВ идеале сервер БД нужно отделить от пользователей файрволом, а не давать им там права на какие-то процедуры.
В идеале пользователи системы вообще не должны знать ничего о БД - тем более где она находится - они максимум должны знать о определённом порте на среднем звене, к которому ходят с виндовой аутентификацией и через SSL
...
Рейтинг: 0 / 0
Организация запросов из десктопного клиента к субд
    #38052921
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КМСУпропущено...

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

С WCF не долго и не дорого - считай тот же веб (если во внутря смотреть), и для monkey считай ничего не меняется - для получения данных не нужно дёргать всякие sql-connection, query и прочая - а просто дёргаешь процедуру - получаешь дата-сет - чистишь кожуру и жуешь.
...
Рейтинг: 0 / 0
Организация запросов из десктопного клиента к субд
    #38052939
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
фиганычАлексей К,

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

С WCF не долго и не дорого - считай тот же веб (если во внутря смотреть), и для monkey считай ничего не меняется - для получения данных не нужно дёргать всякие sql-connection, query и прочая - а просто дёргаешь процедуру - получаешь дата-сет - чистишь кожуру и жуешь.
С вцф всё намного проще - шикарные возможности для аутентификации с авторизацией, веб-сервисы asmx курят в сторонке. Но так или иначе - лишний кодируемый слой, который нужно поддерживать. Веб напрямую через тот же дал обращается к базе, без лишних трудозатрат на транспорт. И тупо отдает отрендеренный гуй через html. Проще, быстрее, универсальнее - любой клиент, от мобилы и планшета.
...
Рейтинг: 0 / 0
Организация запросов из десктопного клиента к субд
    #38052985
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
фиганычАлексей КВ идеале сервер БД нужно отделить от пользователей файрволом, а не давать им там права на какие-то процедуры.
В идеале пользователи системы вообще не должны знать ничего о БД - тем более где она находится - они максимум должны знать о определённом порте на среднем звене, к которому ходят с виндовой аутентификацией и через SSLНу а я о чём?!
...
Рейтинг: 0 / 0
Организация запросов из десктопного клиента к субд
    #38052989
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУАлексей Кпропущено...
Нука тиха там!
Вот только не нужно опять зудеть про чистый контролируемый гавнокод :)
Все занимаются своими делами - архитектор спланировал хранилище с конкретной схемой, дб девелопер наклепал табличек с вьюхами и хп (если сильно надо), кодирующая шарповая monkey подтянула схему в контекст и команда начала пилить морду с логикой. Всё епта.Я никогда не предлагал генерировать БД по code-first-классам. Я как раз за наоборот. :-) Просто мне XML-ные маппинги не нравятся.
...
Рейтинг: 0 / 0
Организация запросов из десктопного клиента к субд
    #38053178
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КПросто мне XML-ные маппинги не нравятся.
Они плохо пахнут? :) Чем твой говнокод на t4 лучше нативного генератора, в котором - ни строчки кода, всё работает из коробки.
...
Рейтинг: 0 / 0
Организация запросов из десктопного клиента к субд
    #38053179
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
фиганычпросто дёргаешь процедуру - получаешь дата-сет - чистишь кожуру и жуешь.
Батенька, за трансфер датасетов через SOA - яйца под нож!
...
Рейтинг: 0 / 0
Организация запросов из десктопного клиента к субд
    #38053418
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
МСУВырисовываются явные плюсы веба - он по дефолту трехзвенен
Это его главный минус - трехзвенка.

МСУ. Если опять не начнешь матом ругаться на оппонентов и оскорблять их другими способами, то эта дискуссия не будет закрыта раньше времени и будет плодотворна.
...
Рейтинг: 0 / 0
Организация запросов из десктопного клиента к субд
    #38053428
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
фиганыч3. Ну и стандартные плюсы трехзвенки.
И стандартные минусы
...
Рейтинг: 0 / 0
Организация запросов из десктопного клиента к субд
    #38053429
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Алексей КВ нормальном LINQ-провайдере должно быть кэширование.
Зуб даете, что оно есть?
...
Рейтинг: 0 / 0
Организация запросов из десктопного клиента к субд
    #38053438
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Алексей КСтрогая типизация + LINQ удобнее чем SQL.
Поскольку типизация не объемлет все возможные запросы, например, сборку текста запроса внутри хранимой процедуры, то ее нельзя использовать везде
...
Рейтинг: 0 / 0
Организация запросов из десктопного клиента к субд
    #38053448
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cat2Это его главный минус - трехзвенка
Масштабируемость, изолированность, высокая безопасность и надёжность - это главный минус?

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

Или Вы не поняли, или Вы не знаете.
Транзакцию можно запустит с сервера, а можно и с клиента.

При запуске транзакции с клиента в том редком, но бывающем случае, когда клиент отвалился посредине транзакции и не может подать сигнал о том, что транзакция подтверждена, сервер ждет некоторое разумное время (какое - не знаю, секрет разработчиков), а потом откатывает ее.

Нормальное решение, однако если в транзакции есть блокировки, то они так и останутся, пока сервер не ее не завершит. Критично ли это для Вашей базы - решать в каждом конкретном случае. Для однопользовательской - точно пофиг
...
Рейтинг: 0 / 0
Организация запросов из десктопного клиента к субд
    #38053458
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cat2Алексей КСтрогая типизация + LINQ удобнее чем SQL.
Поскольку типизация не объемлет все возможные запросы, например, сборку текста запроса внутри хранимой процедуры, то ее нельзя использовать везде
Особенные запросы (CTE и пр. замороченные лохмотья), с которыми ORM не умеет работать (либо работает хуже) - пиши на хранимых процедурах, которые точно так же обвязываются через тизированный контекст. Все остальные 99% - на чистом ORM. Какие сложности?
...
Рейтинг: 0 / 0
Организация запросов из десктопного клиента к субд
    #38053464
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
МСУСамая вменяемая масштабируемая архитектура безопасности - роли с правами хранятся в таблицах
Как и делается по умолчанию в СУБД. "Все данные о базе хранятся в таблицах самой базы". Правило Коддта.
...
Рейтинг: 0 / 0
Организация запросов из десктопного клиента к субд
    #38053473
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cat2МСУСамая вменяемая масштабируемая архитектура безопасности - роли с правами хранятся в таблицах
Как и делается по умолчанию в СУБД. "Все данные о базе хранятся в таблицах самой базы". Правило Коддта.
Ты не понял. Я о том, что реализовывать секурность средствами сиквельных пользователей и ролей, либо еще хуже - через сиквельную виндовую аутентификацию с теми же сиквельными ролями - зло. То же самое относится и к остальным СУБД.
...
Рейтинг: 0 / 0
Организация запросов из десктопного клиента к субд
    #38053622
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
МСУМасштабируемость, изолированность, высокая безопасность и надёжность - это главный минус?
Масштабируемость? Чем она выше, чем в двузвенке? Она зависит от от возможностей СУБД, а не от способа доступа. И среднее звено ее может только понизить.

Высокая безопаснеость? В чем она выше, чем при двузвенке?

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

Ну, матом не крыл, но "идиотами" или неким подобным обзывал
Это же просьба относится ка Алексею К.

Бывалоча начнется дискуссия, я бы еще чего мог сказть - ан нет. МСУ и Алексей поцапались и тему закрыли.

В связи с этим просьба к модераторам.

Чистите оскорбления, а не закрывайте топик
...
Рейтинг: 0 / 0
Организация запросов из десктопного клиента к субд
    #38053625
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
МСУЯ о том, что реализовывать секурность средствами сиквельных пользователей и ролей, либо еще хуже - через сиквельную виндовую аутентификацию с теми же сиквельными ролями - зло. То же самое относится и к остальным СУБД.
Поясни конкретнее, почему это с твоей точки зрения зло.
...
Рейтинг: 0 / 0
Организация запросов из десктопного клиента к субд
    #38053638
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
МСУВсе остальные 99% - на чистом ORM. Какие сложности?
В том, что таких запросов 99%. Какой смысл использовать ОРМ для одного процента?
...
Рейтинг: 0 / 0
Организация запросов из десктопного клиента к субд
    #38053703
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cat2МСУВсе остальные 99% - на чистом ORM. Какие сложности?
В том, что таких запросов 99%. Какой смысл использовать ОРМ для одного процента?Я правильно понимаю, что запросов с динамическим SQL у Вас 99%?
...
Рейтинг: 0 / 0
Организация запросов из десктопного клиента к субд
    #38053960
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cat2Масштабируемость? Чем она выше, чем в двузвенке?
Да, масштабируемость. Вот чем выше:

Руководство MICROSOFT по проектированию архитектуры приложенийХарактеристиками N-уровневой архитектуры приложения являются функциональная декомпозиция приложения, сервисные компоненты и их распределенное развертывание, что обеспечивает повышенную масштабируемость, доступность, управляемость и эффективность использования ресурсов. Каждый уровень абсолютно независим от всех остальных, кроме тех, с которыми он непосредственно соседствует. N-ному уровню требуется лишь знать, как обрабатывать запрос от n+1 уровня, как передавать этот запрос на n-1 уровень (если таковой имеется), и как обрабатывать результаты запроса. Для обеспечения лучшей масштабируемости связь между уровнями обычно асинхронная.

...N-уровневая архитектура обычно имеет не менее трех отдельных логических частей, каждая из которых физически размещается на разных серверах. Каждая часть отвечает за определенную функциональность. При использовании многослойного подхода слой развертывается на уровне, если предоставляемая этим слоем функциональность используется более чем одним сервисом или приложением уровня.

Cat2Она зависит от от возможностей СУБД, а не от способа доступа. И среднее звено ее может только понизить.
Она не зависит от возможностей СУБД, не говори глупости. Возможности СУБД идут лесом, т.к. вменяемые архитекторы в БД видят только тупое хранилище данных, не более того. Главный вопрос опять же в масштабируемости - отмасштабировать приложение на порядки проще, если оно не прибито гвоздями к конкретной СУБД.

Cat2Высокая безопаснеость? В чем она выше, чем при двузвенке?
Да, высокая безопасность. Вот чем:

Руководство MICROSOFT по проектированию архитектуры приложенийПримером N-уровневого/3-уровневого архитектурного стиля может служить типовое финансовое Веб-приложение с высокими требованиями к безопасности. Бизнес-слой в этом случае должен быть развернут за межсетевым экраном, из-за чего приходится развертывать слой представления на отдельном сервере в пограничной сети. Другой пример – типовой насыщенный клиент, в котором слой представления развернут на клиентских компьютерах, а бизнес-слой и слой доступа к данным развернуты на одном или более серверных уровнях.

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

Руководство MICROSOFT по проектированию архитектуры приложенийОсновными преимуществами N-уровневого/3-уровневого архитектурного стиля являются:

Удобство поддержки. Уровни не зависят друг от друга, что позволяет выполнять обновления или изменения, не оказывая влияния на приложение в целом.

Масштабируемость. Уровни организовываются на основании развертывания слоев, поэтому масштабировать приложение довольно просто.

Гибкость. Управление и масштабирование каждого уровня может выполняться независимо, что обеспечивает повышение гибкости.

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


Руководство MICROSOFT по проектированию архитектуры приложенийРассмотрите возможность применения N-уровневой или 3-уровневой архитектуры, если требования по обработке уровней приложения отличаются настолько сильно, что может возникнуть перекос в распределении ресурсов, или существенно разнятся требования по безопасности уровней. Например, конфиденциальные данные не должны храниться на уровне представления, но могут размещаться на бизнес-уровне или уровне данных. N-уровневая или 3-уровневая архитектура также подойдет в случае, если требуется обеспечить возможность совместного использования бизнес-логики разными приложениями и имеется достаточное количество оборудования для выделения необходимого числа серверов для каждого уровня.

Руководство MICROSOFT по проектированию архитектуры приложенийИспользуйте только три уровня, если создаете приложение для внутренней сети организации, где все серверы будут располагаться в закрытой сети; или Интернет-приложение, требования по безопасности которого не запрещают развертывание бизнес-логики на Веб-сервере или сервере приложений. Рассмотрите возможность применения более трех уровней, если соответственно требованиям по безопасности бизнес-логика не может быть развернута в пограничной сети, или если приложение интенсивно использует ресурсы, и для разгрузки сервера необходимо перенести эту функциональность на другой сервер.

Cat2Ну, матом не крыл, но "идиотами" или неким подобным обзывал
Это же просьба относится ка Алексею К.
Ты чё-то гонишь, Кот. У меня с Лёней самые теплые отношения.

Cat2Бывалоча начнется дискуссия, я бы еще чего мог сказть - ан нет. МСУ и Алексей поцапались и тему закрыли.
Кот, ты чего куришь? Алексей - зубр форума, коих единицы. Чтобы я с ним где-то поцапался, ты должен стать балериной. Опять ты не в кассу постишь - то матом я крою, то с Лёней цапаюсь. Пестец какой-то :)

Cat2В связи с этим просьба к модераторам.
Чистите оскорбления, а не закрывайте топик
Хватит сцать раньше времени. И не зуди, надоел.
...
Рейтинг: 0 / 0
Организация запросов из десктопного клиента к субд
    #38053964
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cat2МСУЯ о том, что реализовывать секурность средствами сиквельных пользователей и ролей, либо еще хуже - через сиквельную виндовую аутентификацию с теми же сиквельными ролями - зло. То же самое относится и к остальным СУБД.
Поясни конкретнее, почему это с твоей точки зрения зло.
Выше объяснил про масштабируемость, модульную архитектуру (доступность) и гибкость. Это очень важные компоненты архитектуры.

Cat2МСУВсе остальные 99% - на чистом ORM. Какие сложности?
В том, что таких запросов 99%. Какой смысл использовать ОРМ для одного процента?
Выбрось свою организацию хранилища на помойку и уволь архитектора схемы. Поможет, уверяю. Работа с БД должна быть как можно прозрачна. Актуальные боевые данные - отдельно, BI - в кубах через ETL отдельно. Никаких сложностей. То о чем ты пишешь - не поддается здравому осмыслению.
...
Рейтинг: 0 / 0
Организация запросов из десктопного клиента к субд
    #38053995
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
фиганычк которому ходят с виндовой аутентификацией
а это схера ли? разве что от безысходности
...
Рейтинг: 0 / 0
Организация запросов из десктопного клиента к субд
    #38054079
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cat2Надежность трехзвенки не может быть выше надежности базы данных. Она обязательно будет ниже, так как включается ненадежность промежуточного звенеа.
На пальцах еще раз: в двухзвенной архитектуре пользователь ПО может безпрепятственно получить строку соединения к БД (пусть даже если ты строишь ПО с помощью виндовой аутентификации в БД). Ты считаешь нормальной практикой, если юзеры (пусть даже особо продвинутые или не очень) начнут хаотично юзать БД через сторонние клиенты (Excel, Access, Management Studio и пр.), делать большие выборки, ковыряться во внутрях БД и искать узкие места? Уже сам факт возможности попадания пользователя в БД, тем более сторонними средствами - вопиющ и опасен. Я уже не говорю про двухзвенки, в которых строка соединения к БД идет от sa либо от достаточно привилегированной сиквельной учетной записи - за такое вообще расстрел на месте.
Cat2, что не понятно по безопасности? Вопросы, комментарии, замечания приветствуются.
...
Рейтинг: 0 / 0
Организация запросов из десктопного клиента к субд
    #38054084
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ,

а зачем юзеру дать такие права?
юзер гость и все
...
Рейтинг: 0 / 0
Организация запросов из десктопного клиента к субд
    #38054086
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViPRosМСУ, а зачем юзеру дать такие права?
А какие надо?
ViPRosюзер гость и все
Что такое гость в твоем понимании?
...
Рейтинг: 0 / 0
Организация запросов из десктопного клиента к субд
    #38054091
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ,

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

никаких прав ему не надо давать
гость тот кто просто может логиниться но не может делать ничего кроме этого
А как пользователи будут работать с программой, если они ничего делать не смогут?
...
Рейтинг: 0 / 0
Организация запросов из десктопного клиента к субд
    #38054097
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ,

я этого не говорил
...
Рейтинг: 0 / 0
Организация запросов из десктопного клиента к субд
    #38054100
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViPRosМСУ,

я этого не говорил

Как не говорил?

«никаких прав ему не надо давать» (с)
...
Рейтинг: 0 / 0
Организация запросов из десктопного клиента к субд
    #38054101
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Где деньги - там и правда.
...
Рейтинг: 0 / 0
Организация запросов из десктопного клиента к субд
    #38054105
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ,

ну да
...
Рейтинг: 0 / 0
Организация запросов из десктопного клиента к субд
    #38054184
фиганыч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУфиганычпросто дёргаешь процедуру - получаешь дата-сет - чистишь кожуру и жуешь.
Батенька, за трансфер датасетов через SOA - яйца под нож!

Чем вам трансфер датасета не угодил? в наше время гигабитных сетей и безлимитных интернетов?
к тому же коллекции всё равно придётся тягать, так почему бы и не привычный monkey датасет?
...
Рейтинг: 0 / 0
Организация запросов из десктопного клиента к субд
    #38054185
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cat2Алексей КВ нормальном LINQ-провайдере должно быть кэширование.
Зуб даете, что оно есть?В EF оно есть. Опять же, речь идёт о кэшировании Expression Tree => SQL, чтобы не было путаницы. :-)

Cat2Алексей КСтрогая типизация + LINQ удобнее чем SQL.
Поскольку типизация не объемлет все возможные запросы, например, сборку текста запроса внутри хранимой процедуры, то ее нельзя использовать вездеПредположим, что хранимых процедур нет (минимум). Вызов хранимой процедуры прекрасно обёртывается кодогенерацией. Проблема непонятна.

Cat2Алексей КЕсть. Удобство TransactionScope (или самописного аналога, если боимся распределённых транзакций).
При чем тут распределенные?Я лиш упомянул недостаток TransactionScope, не обращайте внимания.

Cat2Или Вы не поняли, или Вы не знаете.
Транзакцию можно запустит с сервера, а можно и с клиента.Я в курсе.

Cat2При запуске транзакции с клиента в том редком, но бывающем случае, когда клиент отвалился посредине транзакции и не может подать сигнал о том, что транзакция подтверждена, сервер ждет некоторое разумное время (какое - не знаю, секрет разработчиков), а потом откатывает ее.Если работать с MSSQL в disconnected-режиме такие случаи практически исключены. Если держать постоянно открытое соединение - тогда да. Но это не наш метод. Опять же при наличии сервера приложений как правило есть возможность организовать от него к БД нормальный канал связи. Так что проблема надумана.

Cat2Нормальное решение, однако если в транзакции есть блокировки, то они так и останутся, пока сервер не ее не завершит. Критично ли это для Вашей базы - решать в каждом конкретном случае.Конечно.

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

Бывалоча начнется дискуссия, я бы еще чего мог сказть - ан нет. МСУ и Алексей поцапались и тему закрыли.Вы что-то путаете. Мы с МСУ никогда не ругались. Все наши с ним дискуссии всегда были в рамках приличия.
...
Рейтинг: 0 / 0
Организация запросов из десктопного клиента к субд
    #38054190
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУCat2Надежность трехзвенки не может быть выше надежности базы данных. Она обязательно будет ниже, так как включается ненадежность промежуточного звенеа.
На пальцах еще раз: в двухзвенной архитектуре пользователь ПО может безпрепятственно получить строку соединения к БД (пусть даже если ты строишь ПО с помощью виндовой аутентификации в БД). Ты считаешь нормальной практикой, если юзеры (пусть даже особо продвинутые или не очень) начнут хаотично юзать БД через сторонние клиенты (Excel, Access, Management Studio и пр.), делать большие выборки, ковыряться во внутрях БД и искать узкие места? Уже сам факт возможности попадания пользователя в БД, тем более сторонними средствами - вопиющ и опасен. Я уже не говорю про двухзвенки, в которых строка соединения к БД идет от sa либо от достаточно привилегированной сиквельной учетной записи - за такое вообще расстрел на месте.
Cat2, что не понятно по безопасности? Вопросы, комментарии, замечания приветствуются.Вдогонку... Вроде как управление транзакциями с клиента не управляется системой безопасности. Ничто не мешает пользователю через Management Studio начать транзакцию, что-то изменить, на что он имеет права, транзакцию не завершать, соединение оставить открытым, уйти домой...
...
Рейтинг: 0 / 0
Организация запросов из десктопного клиента к субд
    #38054191
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИзопропилГде деньги - там и правда.С этим надо бороться. Должно быть наоборот: "Где правда - там и деньги".
...
Рейтинг: 0 / 0
Организация запросов из десктопного клиента к субд
    #38054193
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
фиганычМСУпропущено...

Батенька, за трансфер датасетов через SOA - яйца под нож!

Чем вам трансфер датасета не угодил? в наше время гигабитных сетей и безлимитных интернетов?
к тому же коллекции всё равно придётся тягать, так почему бы и не привычный monkey датасет?Если клиент к Вашему сервису написан не на дотнете? На Java?
...
Рейтинг: 0 / 0
Организация запросов из десктопного клиента к субд
    #38054205
SeVa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУCat2Масштабируемость? Чем она выше, чем в двузвенке?
Да, масштабируемость. Вот чем выше:

Руководство MICROSOFT по проектированию архитектуры приложенийХарактеристиками N-уровневой архитектуры приложения являются функциональная декомпозиция приложения, сервисные компоненты и их распределенное развертывание, что обеспечивает повышенную масштабируемость, доступность, управляемость и эффективность использования ресурсов. Каждый уровень абсолютно независим от всех остальных, кроме тех, с которыми он непосредственно соседствует. N-ному уровню требуется лишь знать, как обрабатывать запрос от n+1 уровня, как передавать этот запрос на n-1 уровень (если таковой имеется), и как обрабатывать результаты запроса. Для обеспечения лучшей масштабируемости связь между уровнями обычно асинхронная.

...N-уровневая архитектура обычно имеет не менее трех отдельных логических частей, каждая из которых физически размещается на разных серверах. Каждая часть отвечает за определенную функциональность. При использовании многослойного подхода слой развертывается на уровне, если предоставляемая этим слоем функциональность используется более чем одним сервисом или приложением уровня.

Cat2Она зависит от от возможностей СУБД, а не от способа доступа. И среднее звено ее может только понизить.
Она не зависит от возможностей СУБД, не говори глупости. Возможности СУБД идут лесом, т.к. вменяемые архитекторы в БД видят только тупое хранилище данных, не более того. Главный вопрос опять же в масштабируемости - отмасштабировать приложение на порядки проще, если оно не прибито гвоздями к конкретной СУБД.

Cat2Высокая безопаснеость? В чем она выше, чем при двузвенке?
Да, высокая безопасность. Вот чем:

Руководство MICROSOFT по проектированию архитектуры приложенийПримером N-уровневого/3-уровневого архитектурного стиля может служить типовое финансовое Веб-приложение с высокими требованиями к безопасности. Бизнес-слой в этом случае должен быть развернут за межсетевым экраном, из-за чего приходится развертывать слой представления на отдельном сервере в пограничной сети. Другой пример – типовой насыщенный клиент, в котором слой представления развернут на клиентских компьютерах, а бизнес-слой и слой доступа к данным развернуты на одном или более серверных уровнях.

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

Руководство MICROSOFT по проектированию архитектуры приложенийОсновными преимуществами N-уровневого/3-уровневого архитектурного стиля являются:

Удобство поддержки. Уровни не зависят друг от друга, что позволяет выполнять обновления или изменения, не оказывая влияния на приложение в целом.

Масштабируемость. Уровни организовываются на основании развертывания слоев, поэтому масштабировать приложение довольно просто.

Гибкость. Управление и масштабирование каждого уровня может выполняться независимо, что обеспечивает повышение гибкости.

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


Руководство MICROSOFT по проектированию архитектуры приложенийРассмотрите возможность применения N-уровневой или 3-уровневой архитектуры, если требования по обработке уровней приложения отличаются настолько сильно, что может возникнуть перекос в распределении ресурсов, или существенно разнятся требования по безопасности уровней. Например, конфиденциальные данные не должны храниться на уровне представления, но могут размещаться на бизнес-уровне или уровне данных. N-уровневая или 3-уровневая архитектура также подойдет в случае, если требуется обеспечить возможность совместного использования бизнес-логики разными приложениями и имеется достаточное количество оборудования для выделения необходимого числа серверов для каждого уровня.

Руководство MICROSOFT по проектированию архитектуры приложенийИспользуйте только три уровня, если создаете приложение для внутренней сети организации, где все серверы будут располагаться в закрытой сети; или Интернет-приложение, требования по безопасности которого не запрещают развертывание бизнес-логики на Веб-сервере или сервере приложений. Рассмотрите возможность применения более трех уровней, если соответственно требованиям по безопасности бизнес-логика не может быть развернута в пограничной сети, или если приложение интенсивно использует ресурсы, и для разгрузки сервера необходимо перенести эту функциональность на другой сервер.

Cat2Ну, матом не крыл, но "идиотами" или неким подобным обзывал
Это же просьба относится ка Алексею К.
Ты чё-то гонишь, Кот. У меня с Лёней самые теплые отношения.

Cat2Бывалоча начнется дискуссия, я бы еще чего мог сказть - ан нет. МСУ и Алексей поцапались и тему закрыли.
Кот, ты чего куришь? Алексей - зубр форума, коих единицы. Чтобы я с ним где-то поцапался, ты должен стать балериной. Опять ты не в кассу постишь - то матом я крою, то с Лёней цапаюсь. Пестец какой-то :)

Cat2В связи с этим просьба к модераторам.
Чистите оскорбления, а не закрывайте топик
Хватит сцать раньше времени. И не зуди, надоел.

Microsoft сподобилась перевести на русский незамысловатую писульку "Архитектура приложений для чайников" и Муся резко стал архитектором.
...
Рейтинг: 0 / 0
Организация запросов из десктопного клиента к субд
    #38054209
SeVa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУCat2Надежность трехзвенки не может быть выше надежности базы данных. Она обязательно будет ниже, так как включается ненадежность промежуточного звенеа.
На пальцах еще раз: в двухзвенной архитектуре пользователь ПО может безпрепятственно получить строку соединения к БД (пусть даже если ты строишь ПО с помощью виндовой аутентификации в БД). Ты считаешь нормальной практикой, если юзеры (пусть даже особо продвинутые или не очень) начнут хаотично юзать БД через сторонние клиенты (Excel, Access, Management Studio и пр.), делать большие выборки, ковыряться во внутрях БД и искать узкие места? Уже сам факт возможности попадания пользователя в БД, тем более сторонними средствами - вопиющ и опасен. Я уже не говорю про двухзвенки, в которых строка соединения к БД идет от sa либо от достаточно привилегированной сиквельной учетной записи - за такое вообще расстрел на месте.
Cat2, что не понятно по безопасности? Вопросы, комментарии, замечания приветствуются.

Юный "архитектор", стандартная практика "юзать" кубы в трезвенке, расскажи, как это можно организовать с помощью твоего говношипа, если разграничения доступа на уровне кубов и отчеты зависят от учетки
...
Рейтинг: 0 / 0
Организация запросов из десктопного клиента к субд
    #38054247
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KorbanzА производительность сильно падает по сравнению с хп?

Смотря какой запрос и как написан.

На самом деле тут тебе нагонят всякой хрени про ORM, а все на самом деле просто — надо уметь их готовить.

Подробности долго объяснять, если нужно, могу конечно. Но в любом случае сам факт применения orm никак не сказывается на производительности запросов.
...
Рейтинг: 0 / 0
Организация запросов из десктопного клиента к субд
    #38054249
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
фиганычЧем вам трансфер датасета не угодил? в наше время гигабитных сетей и безлимитных интернетов?
к тому же коллекции всё равно придётся тягать, так почему бы и не привычный monkey датасет?
Речь не о безлимитности, а о убогости датасета. Я о том, что в любом SOA нужно юзать только типизированный подход (классы и коллекции классов) - WSDL чище и понятней.

Алексей КОни бесят.
Очень мощный объективный аргумент :)

Алексей КПолученным результатом?
А чем результат лучше?

Алексей КНичто не мешает пользователю через Management Studio начать транзакцию, что-то изменить, на что он имеет права, транзакцию не завершать, соединение оставить открытым, уйти домой...
+1

SeVaЮный "архитектор", стандартная практика "юзать" кубы в трезвенке, расскажи, как это можно организовать с помощью твоего говношипа, если разграничения доступа на уровне кубов и отчеты зависят от учетки
Старый программист не знает про слово "имперсонация"? Срочно учить матчасть. Во-вторых, никто не запрещает манипулировать безопасностью в среднем слое, чтобы фильтровать факты со срезами в разрезе прав пользователя.
...
Рейтинг: 0 / 0
Организация запросов из десктопного клиента к субд
    #38054255
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Korbanz,

Лучшее конечно писать процедуры.
Но по производительности они лучшее только когда есть более одного запроса, связанных какой-то бизнес логикой.
Иначе выигрыш только в удобстве оформления кода, проигрыш в привязке к конкретной субд.
...
Рейтинг: 0 / 0
Организация запросов из десктопного клиента к субд
    #38054264
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cat2Не все можно сделать с клиента хорошо.
Например, транзакции.


Ну, это ты не прав. Просто не прав.
Может что-то ещё бы привёл в виде примера -- я бы согласился.
Но не транзакции.

Cat2Хранимые процедуры всегда будут чуть быстрее, так как они уже откомпилированы и для них обязательно создан план запроса.


Это сильно зависит от СУБД.
Подготовленные запросы также во многих СУБД откомпилированы.
Планы некоторые СУБД кэшируют и для простых запросов, а не только для процедур.

Cat2С хранимыми процедурами проще сделать разграничение прав пользователей


Тут пожалуй соглашусь. Хотя это и зависит от СУБД.

p.s. кстати в первый раз вступаю в полемику с Cat2 на профессиональные темы.
...
Рейтинг: 0 / 0
Организация запросов из десктопного клиента к субд
    #38054271
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Korbanz,

В общем, подытоживая, могу предложить следующий "решатель" проблемы.

если надо использовать CRUD -запросы (CreateReadUpdateDelete) и у тебя не одна поддерживаемая СУБД, стоит использовать ORM.

Если надо писать только аналитические запросы (SELECT-ы ) то ORM применять бесполезно

если поддерживается только одна СУБД, стоит писать код в виде хранимых процедур. если поддерживается одна-две СУБД, можно тоже писать код в виде хранимых процедур, несколько раз, для каждой СУБД свой вариант. Естественно, только если процедур немного (10-20).

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

Тут пожалуй соглашусь. Хотя это и зависит от СУБД.
А я не соглашусь :)

MasterZivp.s. кстати в первый раз вступаю в полемику с Cat2 на профессиональные темы.
Почаще заходи в дотнеты, плас плас вроде как родственен, хотя бы по первой буквачке :)

MasterZiv если надо использовать CRUD -запросы (CreateReadUpdateDelete) и у тебя не одна поддерживаемая СУБД, стоит использовать ORM.

Если надо писать только аналитические запросы (SELECT-ы ) то ORM применять бесполезно

если поддерживается только одна СУБД, стоит писать код в виде хранимых процедур. если поддерживается одна-две СУБД, можно тоже писать код в виде хранимых процедур, несколько раз, для каждой СУБД свой вариант. Естественно, только если процедур немного (10-20).

если запросов много, и много поддерживаемых СУБД, (и запросы аналитические, естественно), то лучше подумать о оформлении кода SQL на клиенте напрямую на SQL в виде универсального, стандартного SQL-я, иногда это получаться не будет, тогда надо писать конкретный запрос в N вариантах, для каждой СУБД.

+1
0
-1 (хп нужно писать только тогда, когда это обусловлено конкретными возможностями (CTE и т.п.) и/или производительностью запросов)
-1 (в таком случае нужно смотреть на распределенный SOA подход - единый шлюз поставки данных для различных информационных систем и различных СУБД, для различных СУБД ORM - то, что доктор прописал)
...
Рейтинг: 0 / 0
Организация запросов из десктопного клиента к субд
    #38054344
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУАлексей КОни бесят.
Очень мощный объективный аргумент :)Мне тоже понравилось.
МСУАлексей КПолученным результатом?
А чем результат лучше?Имею самописный несложный кодогенератор, удобный для дальнейшей поддержки и модификации.
...
Рейтинг: 0 / 0
Организация запросов из десктопного клиента к субд
    #38054349
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZiv Если надо писать только аналитические запросы (SELECT-ы ) то ORM применять бесполезно
LINQ2SQL весьма удобно применять для аналитических запросов. Это ORM или не-ORM?
...
Рейтинг: 0 / 0
Организация запросов из десктопного клиента к субд
    #38054359
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУSeVaЮный "архитектор", стандартная практика "юзать" кубы в трезвенке, расскажи, как это можно организовать с помощью твоего говношипа, если разграничения доступа на уровне кубов и отчеты зависят от учетки
Старый программист не знает про слово "имперсонация"? Срочно учить матчасть. Во-вторых, никто не запрещает манипулировать безопасностью в среднем слое, чтобы фильтровать факты со срезами в разрезе прав пользователя.+38
Тут можно ещё вернуться к традиционному сравнению: linked server vs 3х звенка.

Но мне показалось, что ещё не было обсуждений на тему LINQ2SQL vs SQL. Мне кажется это интереснее.
...
Рейтинг: 0 / 0
Организация запросов из десктопного клиента к субд
    #38054361
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КИмею самописный несложный кодогенератор, удобный для дальнейшей поддержки и модификации.
Невероятно, но - имею сложный кодогенератор из коробки. Поддержка и модификация классов - через частичность. Во-вторых, не имею привычки "портить" кодогенерированные классы, юзаю их as is. В-третьих, самое главное, никакого унылого самописного самопала - добрый натив и никаких танцев с бубнами. В чём я накосячил?
...
Рейтинг: 0 / 0
Организация запросов из десктопного клиента к субд
    #38054367
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУАлексей КИмею самописный несложный кодогенератор, удобный для дальнейшей поддержки и модификации.
Невероятно, но - имею сложный кодогенератор из коробки. Поддержка и модификация классов - через частичность. Во-вторых, не имею привычки "портить" кодогенерированные классы, юзаю их as is. В-третьих, самое главное, никакого унылого самописного самопала - добрый натив и никаких танцев с бубнами. В чём я накосячил?Лукавите. :-)

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

Старый программист не знает про слово "имперсонация"? Срочно учить матчасть. Во-вторых, никто не запрещает манипулировать безопасностью в среднем слое, чтобы фильтровать факты со срезами в разрезе прав пользователя.+38
Тут можно ещё вернуться к традиционному сравнению: linked server vs 3х звенка.
Гы. И еще, кухарки ведь не знают, что есть нативный ActiveDirectoryMembershipProvider , который отлично работает с учетками AD. Можно вообще сделать красивый микс на MembershipProvider + Windows Authentication, где юзеры хранятся в AD, а роли в БД. Можно сделать вообще Use Forms Authentication with Active Directory in ASP.NET 2.0 . Вариантов масса.

Алексей КНо мне показалось, что ещё не было обсуждений на тему LINQ2SQL vs SQL. Мне кажется это интереснее.
Чем оно отличается от EF vs SQL или NH vs SQL? или ORM vs SQL :)
...
Рейтинг: 0 / 0
Организация запросов из десктопного клиента к субд
    #38054380
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КЛукавите. :-)
Там вокруг дизайнера танцев с бубнами хватает, когда в БД 50+ таблиц.
Та фигня это :) Было более двухсот объектов в контексте (таблицы, вьюхи, хранимки, функции) и ничё, полет нормальный.
...
Рейтинг: 0 / 0
Организация запросов из десктопного клиента к субд
    #38054385
kmaw
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KorbanzЗдравствуйте. Подскажите как лучше организовать запросы клиента (на C#) к бд (postgresql):
написать хранимые процедуры и вызывать их из клиента или зашивать sql запросы в сам клиент(этого делать не хочется) или есть ещё какие-то способы?

я бы на вашем месте сделал всеми предложенными здесь способами - ОРМ, SQL в коде, хранимые процедуры - и потом уже сравнил для себя. тогда появится некоторая личностная точка отсчета. она в этом вопросе имеет не последнее значение
...
Рейтинг: 0 / 0
Организация запросов из десктопного клиента к субд
    #38054487
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУАлексей Кпропущено...
+38
Тут можно ещё вернуться к традиционному сравнению: linked server vs 3х звенка.
Гы. И еще, кухарки ведь не знают, что есть нативный ActiveDirectoryMembershipProvider , который отлично работает с учетками AD. Можно вообще сделать красивый микс на MembershipProvider + Windows Authentication, где юзеры хранятся в AD, а роли в БД. Можно сделать вообще Use Forms Authentication with Active Directory in ASP.NET 2.0 . Вариантов масса.++
МСУАлексей КНо мне показалось, что ещё не было обсуждений на тему LINQ2SQL vs SQL. Мне кажется это интереснее.
Чем оно отличается от EF vs SQLЧто-то я не помню тут таких обсуждений.
МСУили NH vs SQL? или ORM vs SQL :)Мне кажется LINQ-ORM - это несколько иная категория.
...
Рейтинг: 0 / 0
Организация запросов из десктопного клиента к субд
    #38054510
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУАлексей КЛукавите. :-)
Там вокруг дизайнера танцев с бубнами хватает, когда в БД 50+ таблиц.
Та фигня это :) Было более двухсот объектов в контексте (таблицы, вьюхи, хранимки, функции) и ничё, полет нормальный.На любителя. :-)
...
Рейтинг: 0 / 0
Организация запросов из десктопного клиента к субд
    #38054536
вопросец
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ, вменяемый архитектор никогда не станет рассматривать СУБД только как хранилище. Купим оракл, будем хранить в нем таблички ибо это тупое хранилище. Ну не идиотизм?

Поменьше читай маркетинговой дадим и поменьше сертифицируйся, у тебя маркетинг головного мозга.
...
Рейтинг: 0 / 0
Организация запросов из десктопного клиента к субд
    #38054556
вопросец
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Korbanz,

отвечу по теме

тебе интересно на каждый чих писать тривиальные хранимки, а потом поддерживать? юзай орм любой что понравится.

все не тривиальные вещи, которые можно оптимально сделать на стороне СУБД, пиши в хранимках.

если это корпоративка, то пиши двухзвенку и не морочь себе голову, если клиент во внешке, то wcf. требования к безопасности спроси у заказчика, от них и пляши.
...
Рейтинг: 0 / 0
Организация запросов из десктопного клиента к субд
    #38054564
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вопросецМСУ, вменяемый архитектор никогда не станет рассматривать СУБД только как хранилище. Купим оракл, будем хранить в нем таблички ибо это тупое хранилище. Ну не идиотизм?
Вменяемому software -архитектору (бывает еще enterprise, но это из другой оперы) монопенисуально, что там купили, оракл или сиквел - он безпроблемно решит поставленную задачу на любой СУБД. И чем сильнее приложение прибито гвоздями к конкретной СУБД, тем жизнь не слаще.

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

P.S. Ты посты читаешь задним местом? Еще раз, только внимательно: 13533695
...
Рейтинг: 0 / 0
Организация запросов из десктопного клиента к субд
    #38054598
вопросец
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ,

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

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

но возможности разные в том числе и для девелоперов, от того цены у СУБД разные, кстати, бывают и другие деревья R-Tree, например, и поиск по ним.

ладно, я сюда не тролить кого либо пришел. зашел от скуки в тему...
...
Рейтинг: 0 / 0
Организация запросов из десктопного клиента к субд
    #38054639
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivp.s. кстати в первый раз вступаю в полемику с Cat2 на профессиональные темы.
Почаще заходи в дотнеты, плас плас вроде как родственен, хотя бы по первой буквачке :)

Нет уж, лучше вы к нам....
...
Рейтинг: 0 / 0
Организация запросов из десктопного клиента к субд
    #38054641
kmaw
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вопросец... Купим оракл, будем хранить в нем таблички ибо это тупое хранилище. Ну не идиотизм? ...

а в чем собственно?
...
Рейтинг: 0 / 0
Организация запросов из десктопного клиента к субд
    #38054651
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КMasterZiv Если надо писать только аналитические запросы (SELECT-ы ) то ORM применять бесполезно
LINQ2SQL весьма удобно применять для аналитических запросов. Это ORM или не-ORM?

Не представляю даже что это такое.
Типа CL-SQL что-то ?
Тогда применяй, вообще, если что-то "весьма удобно" для чего-то -- надо применять...
...
Рейтинг: 0 / 0
Организация запросов из десктопного клиента к субд
    #38054671
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вопросецАлексей К,

но возможности разные в том числе и для девелоперов, от того цены у СУБД разные, кстати, бывают и другие деревья R-Tree, например, и поиск по ним.И что это меняет?
...
Рейтинг: 0 / 0
Организация запросов из десктопного клиента к субд
    #38054676
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivАлексей Кпропущено...
LINQ2SQL весьма удобно применять для аналитических запросов. Это ORM или не-ORM?

Не представляю даже что это такое.
Типа CL-SQL что-то ?Тогда совет не применять Entity Framework (это таки ORM) для аналитических запросов выглядит несколько странным. :-)
...
Рейтинг: 0 / 0
Организация запросов из десктопного клиента к субд
    #38054685
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вопросецМСУ,

разработчик софта, которому все равно какая субд внизу - школоло, начитавшееся маркетинговой шелухи о переносимостях, масштабируемостях и т. п..
В твоём пионеротряде умеют готовить только одну СУБД?

вопросецно возможности разные в том числе и для девелоперов, от того цены у СУБД разные, кстати, бывают и другие деревья R-Tree, например, и поиск по ним.
Еще раз - про цены не в кассу, это чисто политическая стратегия, никоим образом не относящаяся к команде разработки. Тебя сопливого никто и спрашивать не будет о том, сколько, кому и как заплатили за лицензии на СУБД. Твоё дело маленькое - сидеть и гавнокодить. Во-вторых, возможности современных СУБД примерно одинаковые, на это никто не смотрит. На рынке имеются два фаворита - оракуль или сиквел, о каких возможностях ты говоришь? Обе промышленные СУБД с различными редакциями, возможностей - с головой.

вопросецладно, я сюда не тролить кого либо пришел. зашел от скуки в тему...
Ну сказал бы чего умного, а то сопли какие-то мажешь тут.
...
Рейтинг: 0 / 0
Организация запросов из десктопного клиента к субд
    #38054687
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivНет уж, лучше вы к нам....
Так я ж не бачу :)

Алексей КMasterZivпропущено...
Не представляю даже что это такое.
Типа CL-SQL что-то ?Тогда совет не применять Entity Framework (это таки ORM) для аналитических запросов выглядит несколько странным. :-)
Зачёт, Лёня
...
Рейтинг: 0 / 0
Организация запросов из десктопного клиента к субд
    #38054712
netivan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ух нафлудили) Ef 5 рулит. Производительность 4 - 4.4 конечно так себе. Логика в хранимках - только если нужно использовать спец возможности sql для супер-производительности.
...
Рейтинг: 0 / 0
Организация запросов из десктопного клиента к субд
    #38054715
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
netivanЛогика в хранимках - только если нужно использовать спец возможности sql для супер-производительности.Или для рекурсивных запросов, которых в LINQ нет. Но скорее вьюхи чем хранимки.
...
Рейтинг: 0 / 0
Организация запросов из десктопного клиента к субд
    #38054719
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КnetivanЛогика в хранимках - только если нужно использовать спец возможности sql для супер-производительности.Или для рекурсивных запросов, которых в LINQ нет. Но скорее вьюхи чем хранимки.
+1
...
Рейтинг: 0 / 0
Организация запросов из десктопного клиента к субд
    #38054941
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КMasterZivпропущено...


Не представляю даже что это такое.
Типа CL-SQL что-то ?Тогда совет не применять Entity Framework (это таки ORM) для аналитических запросов выглядит несколько странным. :-)

Я имел в виду применение чего-то типа Hibernate/NHibernate.
...
Рейтинг: 0 / 0
Организация запросов из десктопного клиента к субд
    #38054949
вопросец
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ,

откуда столько экспрессии? что-то зацепило?

если тебе полегчает, то в нашем проекте я выбирал субд. у нас кластер. предоставляем сервис. картография...

ты наверное в жизни не сталкивался с данными, которые не укладываются в твой стандартный шаблон в голове. я говорю, например, об обработке пространственных данных (у нас такая специфика). такие вещи и все, что с ними связано очень специфичны для каждой субд. и не считаться с этим не правильно. кроме того общаться с субд тоже надо с умом, бо реализации у них весьма разные и не считаться с этим при написании софта... я здесь говорю о различии в реализации блокировок, транзакций и т. п.. кроме того, каждая субд предоставляет очень много фирменных плюшек, использование которых позволит очень эффективно использовать ресурсы сервера. но тебе этого всего не понять. подозреваю, ты обычный клепатель говномордочек к базам типа бухгалтерия и т.п.. там твои подходы со скрипом да и прокатят, тебе хватит стандартного select/insert/update.
...
Рейтинг: 0 / 0
Организация запросов из десктопного клиента к субд
    #38055118
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivЯ имел в виду применение чего-то типа Hibernate/NHibernate.
Ну так есть же NHibernate.Linq, чем не LINQ? :)

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

вопросецесли тебе полегчает
Да мне собственно не тяжелело.

вопросецто в нашем проекте я выбирал субд. у нас кластер. предоставляем сервис. картография...
Выбирать СУБД в твоём картографическом ларьке может даже уборщица. Это отнюдь не означает, что сие есть правильно.

вопросецты наверное в жизни не сталкивался с данными, которые не укладываются в твой стандартный шаблон в голове.
Ну если твоя голова настолько широка и растянута, милости просим - рви правду матку, мы послушаем.

вопросец я говорю, например, об обработке пространственных данных (у нас такая специфика). такие вещи и все, что с ними связано очень специфичны для каждой субд. и не считаться с этим не правильно.
Тебе же объяснили 10 раз, никто не запрещает написать врапперы на вьюхах (ну или хп), после чего эти объекты радостно используются в типизированном датаконтексте ORM. В чем проблемы?

вопросецкроме того общаться с субд тоже надо с умом, бо реализации у них весьма разные и не считаться с этим при написании софта...
Ты не поверишь, но нужно всё делать с умом. С дуру можно и ... сломать.

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

вопросецно тебе этого всего не понять. подозреваю, ты обычный клепатель говномордочек к базам типа бухгалтерия и т.п.. там твои подходы со скрипом да и прокатят, тебе хватит стандартного select/insert/update.
Поржал. Ты в своём географическом ларьке вообще отупел от хранимых процедур - это ж надо такое придумать, code monkey принимает решение о выборе СУБД. Бугага.
...
Рейтинг: 0 / 0
Организация запросов из десктопного клиента к субд
    #38055158
netivan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ,

ну раз ORM может все, то как сделать это? http://www.sql.ru/forum/actualthread.aspx?tid=978484&hl=
...
Рейтинг: 0 / 0
Организация запросов из десктопного клиента к субд
    #38055186
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
netivanМСУ,
ну раз ORM может все, то как сделать это? http://www.sql.ru/forum/actualthread.aspx?tid=978484&hl=
Стыдно такие вопросы задавать, netivan. Чай не в первом классе. Срочно вбивай буковки "linq join multiple fields" в гугл и радуйся щастью.
...
Рейтинг: 0 / 0
Организация запросов из десктопного клиента к субд
    #38055242
netivan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ,

ты неправильно понял вопрос.
...
Рейтинг: 0 / 0
Организация запросов из десктопного клиента к субд
    #38055284
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
netivanМСУ, ты неправильно понял вопрос.
А ты неправильно код написал :) Конечно же нельзя - за временные таблицы, да и еще глобальные, нужно руки наизнанку завязывать. Не пиши так.
...
Рейтинг: 0 / 0
Организация запросов из десктопного клиента к субд
    #38055301
netivan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ,

вот не надо тут бла бла. решите мне такую задачу, вот есть у вас таблица и в ней есть С1,С2 столбцы, окда. И вам надо из нее вытянуть данные, которые (С1=х1 & С2=х2) ИЛИ (С1=х11 & С2=х21) ... и тд много раз.
...
Рейтинг: 0 / 0
Организация запросов из десктопного клиента к субд
    #38055316
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
netivanМСУ,

вот не надо тут бла бла. решите мне такую задачу, вот есть у вас таблица и в ней есть С1,С2 столбцы, окда. И вам надо из нее вытянуть данные, которые (С1=х1 & С2=х2) ИЛИ (С1=х11 & С2=х21) ... и тд много раз.
Ты как инопланетянен. Ты можешь внятно сформулировать вопрос?
1. Что такое "окда"?
2. Ты сначала спрашиваешь про временные таблицы, потом про linq join multiple fields. Определись.
3. Еще раз, ты хочешь динанически формировать условие where? Лямбду в помощь - доклеивай в IQueryable новый OR-предикат, в чем сложность?
4. Сложно написать адекватный работающий семпл, демонстрирующий проблему? Тогда не потребуется гадать на кофейной гуще, что там нагенерило твой сознание.
...
Рейтинг: 0 / 0
Организация запросов из десктопного клиента к субд
    #38055323
netivan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ,

Код: c#
1.
3. Еще раз, ты хочешь динанически формировать условие where? Лямбду в помощь - доклеивай в IQueryable новый OR-предикат, в чем сложность?

да нет сложности , благо и библиотеки есть хорошие. Сложность начинается когда это в 10 раз медленнее работает.
...
Рейтинг: 0 / 0
Организация запросов из десктопного клиента к субд
    #38055436
17-77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KorbanzЗдравствуйте. Подскажите как лучше организовать запросы клиента (на C#) к бд (postgresql):
написать хранимые процедуры и вызывать их из клиента или зашивать sql запросы в сам клиент(этого делать не хочется) или есть ещё какие-то способы?
* надо три слоя - презентации, бизнес-слой, слой доступа к данным
* опционально бизнес-слой можно соединить со слоем презентации, если в нем использовать MVP/MVVM паттерн, иначе отдельные бизнес-службы в DI-контейнер
* слой доступа к данным в виде абстракции ObjectQuery или Repository, в которых можно конкретно реализовать любой подход для доступа к данным, их тоже в DI-контейнер

выбор БД:
* для обычного CRUD приложения с небольшими объемами данных лучше использовать MS SQL Express, который бесплатный и лучше дружит с человеком
* если есть особенности - то надо изучать их и тогда выбирать БД

выбор технологии для слоя доступа к данным:
* для обычного CRUD приложения с небольшими объемами данных и MS SQL Express лучше всего подойдет LINQ-to-SQL, там тоже можно написать хранимые процедуры, но это будет означать распределение бизнес-логики по нескольким местам, что увеличивает сложность => больше ошибок

можно предположить следующие особенности и проблемы:
* большой объем данных:
- общепризнанные ORM имеют проблемы с обработкой больших объемов данных, например EF имел утечку памяти при обработке больше 20000 объектов в одной транзакции
- некоторые общепризнанные ORM имеют проблемы с операциями над сущностями, когда сначала надо сделать select, а потом update (этим страдает LINQ-to-SQL, в EF в более поздних версиях - оптимизировали это, NHibernate 3 умеет через метод Load)
* работа через dto
- когда результат запроса является dto, собранным из нескольких таблиц БД, то появляются проблемы дальнейшей пакетной обработки записей, например для 50000 таких записей надо считать некое поле, затем поменять его значение по определенной логике, а после обновить в БД - EF в таких условия сдается, мало того, что у него утечка памяти, так и еще MS SQL ограничивает длину запроса, что делает невозможным достать по Id с использованием конструкции WHERE ... IN ... 50000 записей, танцы с бубном со средствами построения нативных sql запросов решения не дали
* бизнес-логика, для которой достаточно данных в БД и возможностей языка SQL:
- если бизнес-задача (алгоритм) может быть решена в рамках БД и языка SQL, то тащить данные на клиент, выполнять эту логику и обновлять в БД - работает дольше и сложнее в реализации, чем выполнить это все на стороне БД в хранимых процедурах, плюс если объем данных велик - проблемы умножаются
- но при использовании MS SQL есть бонус - подключение C# кода прям в SQL запрос, работате немного медленней, не все гладко с преобразованием типов, но зато все возможности C#
* длинные распределенные транзакции, тут надо смотреть откуда они зародились

в выше описанных ситуациях - можно рассмотреть использование хранимых процедур

другие проблемы:
* ORM предполагалась как решения проблемы кросс-платформенности, но в реальности это не всегда так, например различия автоинкрементного поля в Oracle (sequence) и MS SQL 2000-2008 (identity) или ограничение идентификатора в Oracle 10g в 30 символов

фиганычKorbanz,

wcf + хранимые процедуры.

почему wcf:
1. Можешь прикрутить SSL для клиент/серверного обмена
2. Можно разворачивать на IIS и юзать кэширование для сложных/долгих запросов.
3. Не нужно никого клиента баз данных на самом клиенте.
3. Ну и стандартные плюсы трехзвенки.

почему хранимые процедуры:
1. В опу запуск SQL с клиента рассадник sql-инъекций.
2. Статичный SQL запрос проще/лучше оптимизировать.
3. При обновлении структуры базы ты сразу же обновляешь запросы, а не выискиваешь эти запросы в коде клиента - причём некоторые запросы вылазят не сразу, а со временем.
4. Проще разграничивать права доступа - дал права на процедуры/пакеты, а не на таблицы/вьюхи.

почему wcf:
1. а если не надо?
2. а если не надо? и можно юзать иные способы кэширования, в СУБД тоже есть кэш
3. зато нужен клиент для WCF

почему хранимые процедуры:
1. кодирование
2. +
3. в случае использования ORM не требуется править запросы
4. не факт

МСУАлексей Кпропущено...
LINQ2SQL!
главное шоп не ублюдочный кодефирст.
как то в итоге с ним быстрее работается:
1. добавил поле в класс, добавил маппинг, нажал развернуть базу => профит
2. добавил поле в БД, пошел в дизайнер, нажал обновить, оно потупило минуты 2-3-5, кинуло в дизайнер кривой класс, пошел править класс, исправил => профит

Cat2Масштабируемость? Чем она выше, чем в двузвенке? Она зависит от от возможностей СУБД, а не от способа доступа. И среднее звено ее может только понизить.
* во-первых "N-tier" - это физическое разделение (разные сервера), да это замедляет
* во-вторых "Layer" (слой) - это логическое разделение, в какой-то меньшей степени это тоже замедляет
* но, если добавить слой служб (сервер приложений) - можно поставить 10 БД, тем самым увеличив пропускную способность системы в целом
* чтобы достичь того же эффекта на клиент_с_логикой -> сервер_БД - необходимо делать прослойку, которая будет консолидировать данные с нескольких БД -> а это и есть третий слой, который если разместить на отдельном сервере выльется в 3-tier
* не для всех систем целесообразно делать слой служб/сервер приложений

Cat2Высокая безопаснеость? В чем она выше, чем при двузвенке?

Надежность трехзвенки не может быть выше надежности базы данных. Она обязательно будет ниже, так как включается ненадежность промежуточного звенеа.
все ерунда, как и через веб-сервер можно поломать все внутри, так и через сервер БД, смотря как настроена безопасность и там и там

SeVaрасскажи, как это можно организовать с помощью твоего говношипа, если разграничения доступа на уровне кубов и отчеты зависят от учетки
от учетки СУБД? тогда убрать зависимость от нее

вопросецвменяемый архитектор никогда не станет рассматривать СУБД только как хранилище
да, ее еще можно заставить делить таблицы и старые данные отделять, для ускорения запросов, это будет оттягивать момент создания второй БД-копии

netivanEf 5 рулит
оно уже умеет доставать 50 тыс записей по списку ID и без OutOfMemoryException ?

зы трехзвенка нужна:
- если потребителями является некое третье лицо, которому необходимо программное API
- потребителями являются некие другие платформы
- для масштабируемости и/или использования в шине данных
...
Рейтинг: 0 / 0
Организация запросов из десктопного клиента к субд
    #38055464
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
17-77,

новую книжку прочитал?

какие проблемы из за чего пробемы) сэтим

>оно уже умеет доставать 50 тыс записей по списку ID и без OutOfMemoryException ?
...
Рейтинг: 0 / 0
Организация запросов из десктопного клиента к субд
    #38055465
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
netivanда нет сложности , благо и библиотеки есть хорошие.
А на кой ляд тогда сабж в адо.нет запостал? Чё-то ты моск мне насилуешь, netivan...

netivanСложность начинается когда это в 10 раз медленнее работает.
Сначала нужно руки выпрямить, а потом LINQ юзать. Работает это абсолютно так же, как и через обычный SQL.
...
Рейтинг: 0 / 0
Организация запросов из десктопного клиента к субд
    #38055478
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
17-77netivanEf 5 рулит
оно уже умеет доставать 50 тыс записей по списку ID и без OutOfMemoryException ?
"Оно" и умело раньше, RTFM: MergeOption.NoTracking или AsNoTracking()

17-77зы трехзвенка нужна:
- если потребителями является некое третье лицо, которому необходимо программное API
- потребителями являются некие другие платформы
Чушь на постном масле.

17-77как то в итоге с ним быстрее работается:
1. добавил поле в класс, добавил маппинг, нажал развернуть базу => профит
2. добавил поле в БД, пошел в дизайнер, нажал обновить, оно потупило минуты 2-3-5, кинуло в дизайнер кривой класс, пошел править класс, исправил => профит
По первому пункту не торопи коней - а данные куда деваются после разворачивания, ась? Как-то у тебя всё просто - была БД с данными, добавили поле в таблицу и? Подскажу - нужно руками и в двух местах править, а в случае с дизайнером - в одном месте (класс перегенерится автоматом). Делай выводы.
...
Рейтинг: 0 / 0
Организация запросов из десктопного клиента к субд
    #38055489
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ,

ты все это точно говоришь или просто что то подобное ляпаешь?
я вот погуглил про это НоТрекинг и понял что в этом случае ЕФ обекты к графу объектов не добавляет, то есть возвращает левую структуру для чего то
а 777 вроде чего то там хочет апдейтить какие то списки 50000 и т.д.
а то мне кажется что каждый из вас говорит о своем
...
Рейтинг: 0 / 0
Организация запросов из десктопного клиента к субд
    #38055507
17-77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViPRosновую книжку прочитал?
не понял наезда

ViPRosкакие проблемы из за чего пробемы) сэтим
>оно уже умеет доставать 50 тыс записей по списку ID и без OutOfMemoryException ?

а если по-русски написать? это вопрос был?

МСУ"Оно" и умело раньше, RTFM: MergeOption.NoTracking или AsNoTracking()

dto (ака вьюха) и entity разные вещи, пробовал в EF смержить две _разных_ entity ? что пишет? какой exception?

МСУЧушь на постном масле.

абаснуй

МСУПо первому пункту не торопи коней - а данные куда деваются после разворачивания, ась? Как-то у тебя всё просто - была БД с данными, добавили поле в таблицу и? Подскажу - нужно руками и в двух местах править, а в случае с дизайнером - в одном месте (класс перегенерится автоматом). Делай выводы.
во-первых - автоматом там ничего не перегенерится - я уже описал процесс с 2-3-5 минутным ожиданием
во-вторых - я описывал процесс при разработке, когда нет продакшена, при развертывании на продакшн в случае с database-first так же надо писать/генерить скрипт обновления данных в зависимости от ситуации
в-третьих - я разрабатывал database-first модель в EF и code-first модель в NHibernate + Fluent, и вот во втором случае все гораздо быстрее
в-четвертых - хотя да, дизайнера нет в NH, отношения сущностей все же лучше видны на ER-диаграмме
...
Рейтинг: 0 / 0
Организация запросов из десктопного клиента к субд
    #38055529
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
17-77,

угу, был вопрос
в чем суть проблемы с 50тыщ?
...
Рейтинг: 0 / 0
Организация запросов из десктопного клиента к субд
    #38055576
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViPRosМСУ, ты все это точно говоришь или просто что то подобное ляпаешь?
Какой-то неадекватный вопрос.

ViPRosя вот погуглил про это НоТрекинг и понял что в этом случае ЕФ обекты к графу объектов не добавляет, то есть возвращает левую структуру для чего то
Материализованные объекты не отслеживаются в контексте с отключением кеширования, фича чисто для чтения больших массивов данных. О какой "левой структуре" ты вещаешь - одному богу известно.

ViPRosа 777 вроде чего то там хочет апдейтить какие то списки 50000 и т.д.
а то мне кажется что каждый из вас говорит о своем
Про апдейт небыло сказано ни слова, речь шла о OutOfMemoryException , читай внимательнее. Ну а если ты хочешь сделать апдейт нематериализованного объекта, нужен второй конктест.

17-77dto (ака вьюха) и entity разные вещи, пробовал в EF смержить две _разных_ entity ? что пишет? какой exception?
Не DTO, а отключение трекинга. Без трекинга ты не сможешь ничего мержить, еще раз - читай документацию. Фича конкретно под нужды. Ты спросил про чтение 50000 и OutOfMemoryException - я дал тебе рецепт. Теперь ты продолжаешь дальше генерить дополнительные условия. Определись. Если интересует конкретная задача - описывай подробно все нюансы, дам решение. А жалом водить из стороны в сторону будешь в детском саду.

17-77абаснуй
Обосновал двумя страница ранее со ссылками на MS Application Architecture Guide.

17-77во-первых - автоматом там ничего не перегенерится - я уже описал процесс с 2-3-5 минутным ожиданием
Во-первых, автоматом генерится контекст, разумеется, через Run Custom Tool. Если ты не врубился, то речь о том, что не нужно сторонний гавнокод на t4 писать, всё нативно и в коробке.

17-77во-вторых - я описывал процесс при разработке, когда нет продакшена, при развертывании на продакшн в случае с database-first так же надо писать/генерить скрипт обновления данных в зависимости от ситуации
Ты нигде ничего не сказал про то, что эти два пункта относились к продакшену. Во-вторых, причем тут продакшен? На продакшене точно так же могут добавиться поля - и что, ты будешь сносить продуктовую базу и создавать с нуля? Тебя посодютъ (с)
Так что автоматическое создание базы для корпоративных задач - польза нулевая.

17-77в-третьих - я разрабатывал database-first модель в EF и code-first модель в NHibernate + Fluent, и вот во втором случае все гораздо быстрее
Да однохерственно. Что на хибовом флюенте писать маппинги, что на EF. Непонятно, о каких микросекундах выйгрыша ты вещаешь.

17-77в-четвертых - хотя да, дизайнера нет в NH, отношения сущностей все же лучше видны на ER-диаграмме
Дизайнер есть для хиба, опять мимо.
...
Рейтинг: 0 / 0
Организация запросов из десктопного клиента к субд
    #38055601
17-77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViPRosугу, был вопрос
в чем суть проблемы с 50тыщ?
там несколько проблем было:
1. в базе, в таблице было порядка 300 тыс записей на тестовом и порядка миллиона на продакшене (они конечно еще были разбиты на группы, но один хрен в группе могло быть 50-100 тыс записей)
2. были функции, например:
* достать 50-100 тыс записей, точнее http URL из них (в поле хранилось), и просканировать все, получив ответ http 200/404, обновить статус в таблице в другом поле
* достать 50-100 тыс записей с вложенными объектами и сгенерировать для них определенные другие данные, потом сохранить это в БД
* вот в таких случаях, при вызове SaveChanges() в EF спустя некоторое время оно падало с OutOfMemoryException, в диспетчере задач было занято 99,99% из 2 Гб ОЗУ
3. был виндовый клиент, в котором был пейджинг и сложный фильтр, чтобы все это дело показывать пользователю, разумеется ему никто не вываливал мешок с миллионом записей, выводился dto, который из нескольких таблиц джоином и в виде .Select(e => new MyDto ...), по факту это работало аналогично родной вьюхе MS SQL
4. из виндовго клиента, после всяких фильтров и выделений записей на сервер приходило: либо условия запроса, либо условия запроса + список ID исключенных из обработки, либо только список обрабатываемых ID
5. соответственно:
* условия запроса работали для dto (вьюхи), но не всегда работал для entity, так как имена полей были разные и там были вложенности, была проблема переложения фильтра
* надо было исключать некоторые записи из обработки по ID, программно или дополнительным WHERE NOT IN
* надо было вытянуть 20 тыс записей по ID, если писать это через WHERE IN - то после 7000 с чем-то MS SQL выдавал, что шибко длинный текст запроса, давайдосвидания
* в некоторых случаях надо было для условия запроса / для указанных ID / нативного SQL запроса подгрузить сущности _вместе_ с вложенными объектами (чтобы их обработать), но не методом N+1, а джоином (Include в EF), и насколько я помню для нативного запроса - это не заработало в принципе, Include можно было включить для entity, но нельзя его включить для самописного нативного SQL, который возвращает тот же самый entity
...
Рейтинг: 0 / 0
Организация запросов из десктопного клиента к субд
    #38055609
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
17-77* достать 50-100 тыс записей с вложенными объектами и сгенерировать для них определенные другие данные, потом сохранить это в БД
* вот в таких случаях, при вызове SaveChanges() в EF спустя некоторое время оно падало с OutOfMemoryException, в диспетчере задач было занято 99,99% из 2 Гб ОЗУ[/quot]
И правильно, что падало. Про трекинг я тебе уже поведал - дерзай.

17-773. был виндовый клиент, в котором был пейджинг и сложный фильтр, чтобы все это дело показывать пользователю, разумеется ему
никто не вываливал мешок с миллионом записей, выводился dto, который из нескольких таблиц джоином и в виде .Select(e => new MyDto ...), по факту это работало аналогично родной вьюхе MS SQL
Ну всё верно, с прямыми руками будет всё нормально работать. Серверный пейджинг рулит.

17-77* условия запроса работали для dto (вьюхи), но не всегда работал для entity, так как имена полей были разные и там были вложенности, была проблема переложения фильтра
Ничего не понятно, какой-то туман вместо конкретики. Можешь адекватно сформулировать проблему?

17-77* надо было исключать некоторые записи из обработки по ID, программно или дополнительным WHERE NOT IN
Можно решить различными способами
1. PredicateBuilder + Like
2. Udf
3. Where(d => ids.IndexOf(" " + item.ToString() + " ") != -1)
4. И т.д.

17-77* надо было вытянуть 20 тыс записей по ID, если писать это через WHERE IN - то после 7000 с чем-то MS SQL выдавал, что шибко длинный текст запроса, давайдосвидания
Выпрямляем руки. Как? Читай выше.

17-77* в некоторых случаях надо было для условия запроса / для указанных ID / нативного SQL запроса подгрузить сущности _вместе_ с вложенными объектами (чтобы их обработать), но не методом N+1, а джоином (Include в EF), и насколько я помню для нативного запроса - это не заработало в принципе, Include можно было включить для entity, но нельзя его включить для самописного нативного SQL, который возвращает тот же самый entity
Опять феерический сумбур. Нужен конкретный пример.
...
Рейтинг: 0 / 0
Организация запросов из десктопного клиента к субд
    #38055619
17-77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУНе DTO, а отключение трекинга. Без трекинга ты не сможешь ничего мержить, еще раз - читай документацию. Фича конкретно под нужды. Ты спросил про чтение 50000 и OutOfMemoryException - я дал тебе рецепт. Теперь ты продолжаешь дальше генерить дополнительные условия. Определись. Если интересует конкретная задача - описывай подробно все нюансы, дам решение. А жалом водить из стороны в сторону будешь в детском саду.

вот тут я уже давно определился, читаем внимательней:

17-77- когда результат запроса является dto, собранным из нескольких таблиц БД, то появляются проблемы дальнейшей пакетной обработки записей, например для 50000 таких записей надо считать некое поле, затем поменять его значение по определенной логике, а после обновить в БД - EF в таких условия сдается, мало того, что у него утечка памяти, так и еще MS SQL ограничивает длину запроса, что делает невозможным достать по Id с использованием конструкции WHERE ... IN ... 50000 записей, танцы с бубном со средствами построения нативных sql запросов решения не дали

МСУОбосновал двумя страница ранее со ссылками на MS Application Architecture Guide.

книжку прочитал, думать головой разучился
17-77если потребителями является некое третье лицо, которому необходимо программное API
расскажи как будешь предоставлять бизнес-логику потребителям, которые сами захотят написать собственный клиент с блекджеком и шлюхами, а не юзать твою веб-/вин-морду? хранимки спасут не всегда, вдруг придется консолидировать информацию с нескольких источников
17-77потребителями являются некие другие платформы
протоколы передачи данных и всякие XML идиоты же придумали, правда? упразднишь? как данные передашь на другой континент? ком-объект заюзаешь? xDD

МСУВо-первых, автоматом генерится контекст, разумеется, через Run Custom Tool. Если ты не врубился, то речь о том, что не нужно сторонний гавнокод на t4 писать, всё нативно и в коробке.

для начала надо в дизайнер добавить сущность, а потом уже запускать run custom tool, а чтобы добавить сущность надо сделать процесс описанный мной в пункте 2, так что да я забыл туда дописать еще "нажать Run Custom Tool"

МСУТы нигде ничего не сказал про то, что эти два пункта относились к продакшену. Во-вторых, причем тут продакшен? На продакшене точно так же могут добавиться поля - и что, ты будешь сносить продуктовую базу и создавать с нуля? Тебя посодютъ (с)
Так что автоматическое создание базы для корпоративных задач - польза нулевая.

я и имел ввиду базу девелопера, это ты тут вспомнил про продуктовую базу и стал спрашивать про обновление данных:
МСУа данные куда деваются после разворачивания, ась?
так что не переворачивай слова, а тестовые данные на девелоперской базе заливаются с нуля скриптом и это проще и быстрее чем делать скрипт обновления

МСУДа однохерственно. Что на хибовом флюенте писать маппинги, что на EF. Непонятно, о каких микросекундах выйгрыша ты вещаешь.

кто-то тут говорил что code-first плоха штука, таки засеки сколько времени ты будешь через дизайнер добавлять сущности, в xml-объявлениях EF можно моск сломать, одно и тоже по два или три раза

МСУДизайнер есть для хиба, опять мимо.
не заливай, в самом NH дизайнера нет, про сторонние средства я в курсе
...
Рейтинг: 0 / 0
Организация запросов из десктопного клиента к субд
    #38055633
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
17-77,

а ты пробуй Join c пользовательским типом вместо In
...
Рейтинг: 0 / 0
Организация запросов из десктопного клиента к субд
    #38055634
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а так спс. значит еф как был гвоном так и остался
хорошо что не изучил
...
Рейтинг: 0 / 0
Организация запросов из десктопного клиента к субд
    #38055651
17-77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViPRosа ты пробуй Join c пользовательским типом вместо In
ну если будет еще проект с EF, попробую, сейчас я все как-то на NH

ViPRosа так спс. значит еф как был гвоном так и остался
хорошо что не изучил
да незачто, но думаю с NH проблем не меньше будет, там я с другими сталкивался, например
* пейджинг + джоин для загрузки вложенных объектов, stackoverflow пестрит этой проблемой и нашли решение только через QueryOver с вложенным запросом и Distinct Transformer
* в одном уникальном случае, на довольно запутанной структуре БД NH.Linq падал, он не мог транслировать запрос в SQL, но там как бы и так видно, что надо переработать структуру БД
* еще меня волнует момент, когда в MS SQL можно было переносить условие WHERE в JOIN или простая группировка/агрегатные функции, обернутые в алиас таблицы, запросы ускорялись в разы - собственно можно ли такое в современных ORM замутить или нет
...
Рейтинг: 0 / 0
Организация запросов из десктопного клиента к субд
    #38055663
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
17-77,

а мне интересно как раз как они апдейт делают, скопом или по каждому объекту в цикле
...
Рейтинг: 0 / 0
Организация запросов из десктопного клиента к субд
    #38055676
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
17-77вот тут я уже давно определился, читаем внимательней
Я ж тебе сказал, если у тебя DTO или что-то еще - все обновления через новый контекст. Что непонятно? ORM не будут работать с левыми классами.

17-77EF в таких условия сдается, мало того, что у него утечка памяти
Откуда информация по утечкам? Где факты, а не сопли на голом сене?

17-77MS SQL ограничивает длину запроса, что делает невозможным достать по Id с использованием конструкции WHERE ... IN ... 50000 записей, танцы с бубном со средствами построения нативных sql запросов решения не дали
А причем тут EF? Во-вторых, длина запроса называется батчем. В-третьих, выше я тебе пальцем ткнул на 3 варианта, как сделать, чтобы непересвопить батч, мало?

17-77книжку прочитал, думать головой разучился
Книжку не читал, думать головой и не умел?

17-77расскажи как будешь предоставлять бизнес-логику потребителям, которые сами захотят написать собственный клиент с блекджеком и шлюхами, а не юзать твою веб-/вин-морду? хранимки спасут не всегда, вдруг придется консолидировать информацию с нескольких источников
Даже двоешники знают чудесные 3 буквы - SOA. Не сылхал? Срочно открывай букварь и начинай штудировать WCF и ASMX, а то так бездарем и помрешь.

17-77протоколы передачи данных и всякие XML идиоты же придумали, правда? упразднишь? как данные передашь на другой континент? ком-объект заюзаешь? xDD
Причем тут протоколы с XML и ORM? Ты не вписываешься в повороты, заносит то влево то вправо.

17-77для начала надо в дизайнер добавить сущность, а потом уже запускать run custom tool, а чтобы добавить сущность надо сделать процесс описанный мной в пункте 2, так что да я забыл туда дописать еще "нажать Run Custom Tool"
Нужно отрефрешить контекст, и чё дальше-то? Код я не пишу. Про несколько минут ты гонишь, разумеется.

17-77я и имел ввиду базу девелопера, это ты тут вспомнил про продуктовую базу и стал спрашивать про обновление данных
Да какая в жопу разница, чья эта база. На девелоперских стендах также присутствуют данные, которые важны для отладки и тестирования, зачем их сносить? Во-вторых, ты уже сам запутался, сначала говоришь про продакшен, теперь говоришь, что я опять не так понял, и речь, оказывается, уже о девелоперской базе. Я не могу уследить за потоком твоего сознания, определись с мыслями.

17-77так что не переворачивай слова, а тестовые данные на девелоперской базе заливаются с нуля скриптом и это проще и быстрее чем делать скрипт обновления
На каждый чих (добавить поле, изменить релейшен, изменить тип поля, добавить таблицу и т.д.) у тебя будет пересоздаваться гигабайты данных? Ты с дубу рухнул, нахрена это нужно?
Во-вторых, не всегда разработка ведется со своей "чистой" базой. Ты не подумал о том, что есть корпоративные платформенные решения со своими БД (MS Dynamics CRM, SharePoint, Axapta, ECM'ы и т.д.)? Тут уже не удалишь базу, батенька.
Да... способы твои страшны. На каком курсе тебе сейчас читают этот дебилизм? :)

17-77кто-то тут говорил что code-first плоха штука, таки засеки сколько времени ты будешь через дизайнер добавлять сущности, в xml-объявлениях EF можно моск сломать, одно и тоже по два или три раза
А я и не отрицал сего факта - code-first отстой. Засекал - добавить десяток сущностей в контекст 10 секунд (время тупо на выбрать нужные объекты). А теперь ты засеки, сколько раз у тебя будет заново пересоздаватья гигобайтная база для того, чтобы тупо добавить поле. Во-вторых, у тебя уже есть сегодняшние наработанные тестовые данные, нужные для разработки, которые похерятся. Ручками заново будешь их вколачивать? Убей себя, серьезно.

17-77не заливай, в самом NH дизайнера нет, про сторонние средства я в курсе
Ты сам-то понял что сказал? Что значит "в самом"? В "самом" EF тоже нету дизайнера, дизайнер есть в студии.
...
Рейтинг: 0 / 0
Организация запросов из десктопного клиента к субд
    #38055735
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
17-77* достать 50-100 тыс записей, точнее http URL из них (в поле хранилось), и просканировать все, получив ответ http 200/404, обновить статус в таблице в другом поле
* достать 50-100 тыс записей с вложенными объектами и сгенерировать для них определенные другие данные, потом сохранить это в БДДля сохранения можно самостоятельно, без EF, генерить SQL-батчи. Использовать для этого EF никто не заставляет. Не нужно вставлять "всё" в один батч, чтобы MSSQL не ругался на его размеры.

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

вот не надо тут бла бла. решите мне такую задачу, вот есть у вас таблица и в ней есть С1,С2 столбцы, окда. И вам надо из нее вытянуть данные, которые (С1=х1 & С2=х2) ИЛИ (С1=х11 & С2=х21) ... и тд много раз.Ну если не получается одним запросом - делайте несколькими. Будет работать медленно но верно.
...
Рейтинг: 0 / 0
Организация запросов из десктопного клиента к субд
    #38055816
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей К,

а нафига тады орм
основная задача орм то как раз запись, читать любой может, а писак маловато будет(усе до сих пор помнят пушкина, а скоко выдающихся читак было, кто их помнит??? токо капицу если в пример привести или перельмана)
...
Рейтинг: 0 / 0
Организация запросов из десктопного клиента к субд
    #38055825
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViPRosосновная задача орм то как раз записьНет.
...
Рейтинг: 0 / 0
Организация запросов из десктопного клиента к субд
    #38055842
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей К,

что есть проблемы и с чтением?
...
Рейтинг: 0 / 0
Организация запросов из десктопного клиента к субд
    #38055851
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViPRosа нафига тады орм
"если не получается одним запросом - делайте несколькими" (с)

...- Не получается в хранимке сделать задачу одним запросом
- Делайте несколькими
- А нафига тогда SQL?

Сахават, когда ты уже научишься адекватные вопросы задавать?

ViPRosосновная задача орм то как раз запись
Бред сивой кобылы. Основная задача SQL тоже запись?
...
Рейтинг: 0 / 0
Организация запросов из десктопного клиента к субд
    #38055992
netivan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ,

ну и что генерит LInq в этом случае?
...
Рейтинг: 0 / 0
Организация запросов из десктопного клиента к субд
    #38055997
netivan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей К,

я же не говорил ,что не работает. Я говорил, что медленно. И вот тут как раз приходит магия t-sql. Я собственно не против Orma, и EF , просто подчеркиваю, что от хранимок все равно не уйти )
...
Рейтинг: 0 / 0
Организация запросов из десктопного клиента к субд
    #38056067
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
netivanМСУ, ну и что генерит LInq в этом случае?
Вот возьми руки, выпрями их, включи мозг, напиши запрос и посмотри, что он генерит. В чём конкретно вопрос?

netivanАлексей К, я же не говорил ,что не работает. Я говорил, что медленно.
Разговор о сферической кобыле без упряжки.
...
Рейтинг: 0 / 0
Организация запросов из десктопного клиента к субд
    #38056072
netivan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ,

разница в том делать тыщу раз (ID=x and ID=x2) OR и так 1000 раз и 10 секунд или делаешь JOIN и получаешь 1 секунду.
...
Рейтинг: 0 / 0
Организация запросов из десктопного клиента к субд
    #38056144
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
netivanМСУ,

разница в том делать тыщу раз (ID=x and ID=x2) OR и так 1000 раз и 10 секунд или делаешь JOIN и получаешь 1 секунду.
Ну так не делай тыщу раз (ID=x and ID=x2) OR, а сделай джойн в ORM и получи свою секунду. В чем проблема?
...
Рейтинг: 0 / 0
Организация запросов из десктопного клиента к субд
    #38056159
netivan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ,

ну у нас рекурсия. Я тебе дал ссылку на свой вопрос, прочитай ее. Если знаешь как - напиши. Но у меня есть в этом сомнение :)
...
Рейтинг: 0 / 0
Организация запросов из десктопного клиента к субд
    #38056217
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
netivanМСУ, ну у нас рекурсия.
ORM не умеет работать с CTE, сто раз уже тылдычили. Пиши вьюху / функцию / хп и обвязывай в своём типизированном датаконтексте. В чем сложность?

netivanЯ тебе дал ссылку на свой вопрос, прочитай ее. Если знаешь как - напиши. Но у меня есть в этом сомнение :)
Я тебе уже ответил: 13538523 13539176 13541607

P.S. Про рекурсию в твоих постах ничего не было ( http://www.sql.ru/forum/actualthread.aspx?tid=978484)

ВбросnetivanВот не пойму позволяет сделать Join и таблицей "из памяти" или нет ? Запрос что - то типа:
Код: c#
1.
from a in ctx.Table Join c in mycollection on a.ID=c.ID & a.ID1=c.ID1 select ...


пока что сделал с помощью SP, но неспортивно :(


1. Начинаешь придумывать новые условия?
2. В чем сложность конкретно и понятно задать вопрос?
3. А ты как невинная девица, не знаешь к какому херу примастыриться Говори по-существу - с конкретными примерами и вопросами.
4. Если проблема с рекурсией, так и говори, что имеешь такую-то и такую-то схему, такой-то и такой-то запрос. И что тебе не понятно, как это будет выглядеть в той или иной ORM. Когда научишься вопросы задавать правильно?
...
Рейтинг: 0 / 0
Организация запросов из десктопного клиента к субд
    #38056225
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
netivanАлексей К,

я же не говорил ,что не работает. Я говорил, что медленно. И вот тут как раз приходит магия t-sql. Я собственно не против Orma, и EF , просто подчеркиваю, что от хранимок все равно не уйти )Я тоже не говорил что не работает. Просто в моём понимании:

"работает медленнее чем надо" == "не работает"

:-)

netivanМСУ,
разница в том делать тыщу раз (ID=x and ID=x2) OR и так 1000 раз и 10 секунд или делаешь JOIN и получаешь 1 секунду.

1000 простых запросов вида select * from T where X=@x and Y=@y выполняться будут тоже порядка секунды. А то и быстрее, если сетевой пинг позволит + запустить их одновременно асинхронно.

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

что есть проблемы и с чтением?У меня проблем нет.
...
Рейтинг: 0 / 0
Организация запросов из десктопного клиента к субд
    #38056354
netivan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей К,

все равно не согласен, медленнее будет полюбому, даже пусть 5 секунд против 2. Тут я делаю один запрос и получаю быстро то что надо. а тут надо будет делать 1000, а если у меня 1000 таких в секунду что получаем? Вообщем вывод - то какой- orm не на все способен. Думаю на этом надо завершить дискуссию.
...
Рейтинг: 0 / 0
Организация запросов из десктопного клиента к субд
    #38057010
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Алексей КCat2Ну, матом не крыл, но "идиотами" или неким подобным обзывал
Это же просьба относится ка Алексею К.

Бывалоча начнется дискуссия, я бы еще чего мог сказть - ан нет. МСУ и Алексей поцапались и тему закрыли.Вы что-то путаете. Мы с МСУ никогда не ругались. Все наши с ним дискуссии всегда были в рамках приличия.
Прошу прощения. Они с SeVa ругаются
...
Рейтинг: 0 / 0
Организация запросов из десктопного клиента к субд
    #38057037
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Получить может. Соединится не может.
МСУНа пальцах еще раз: в двухзвенной архитектуре пользователь ПО может безпрепятственно получить строку соединения к БД (пусть даже если ты строишь ПО с помощью виндовой аутентификации в БД). Ты считаешь нормальной практикой, если юзеры (пусть даже особо продвинутые или не очень) начнут хаотично юзать БД через сторонние клиенты (Excel, Access, Management Studio и пр.), делать большие выборки, ковыряться во внутрях БД и искать узкие места? Уже сам факт возможности попадания пользователя в БД, тем более сторонними средствами - вопиющ и опасен. Я уже не говорю про двухзвенки, в которых строка соединения к БД идет от sa либо от достаточно привилегированной сиквельной учетной записи - за такое вообще расстрел на месте.
Cat2, что не понятно по безопасности? Вопросы, комментарии, замечания приветствуются.

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

Впрочем, могут быть более мягкие варианты. Например, все Domain Users включены в группу public одной из баз. В этом случае они могут увидеть названия таблиц. И все.

Никакого доступа из Excelя не получится, если доступ дается не через разрешения на иаблицы, а через разрешения на ХП.

Разумеется, если используется ОРМ, то кому-то будут даны прямые права на таблицы и можно будет, при известных знаниях, лазать к базе чем угодно.

При использовании хранимых процедур пользователи не знают их названий и не знают их параметров.

Но даже если и знают, то не смогут сделать ничего того, что не позволдяют сделать хранимки.

Ты как-то писал про "тупые хранилища". Приходится напомнить, что эти хранилища не тупые. Их можно тупо использовать и превратить в "тупые хранилища".
Настоящая правильно спроектированная база сама должна поддерживать целостность и непротиворечивость, огранирчения которой нельзя обойти никаким способом. Ну, разумеется, кроме снятия ограничений администратором.
...
Рейтинг: 0 / 0
Организация запросов из десктопного клиента к субд
    #38057040
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
MasterZivИначе выигрыш только в удобстве оформления кода, проигрыш в привязке к конкретной субд.
Вы постоянно пишете приложения которые должны работать со всеми существующими СУБД?
...
Рейтинг: 0 / 0
Организация запросов из десктопного клиента к субд
    #38057047
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
MasterZivCat2Не все можно сделать с клиента хорошо.
Например, транзакции.


Ну, это ты не прав. Просто не прав.
Может что-то ещё бы привёл в виде примера -- я бы согласился.
Но не транзакции.
Допустим мы открываем транзакцию на клиенте из двух запросов.
В промежутке между ними отвалилась сеть.
Первый запрос заблокировал какие-то ресурсы. (я знаю про версионники! Но и в этом случае незавершенная транзакция ни к чему хорошему не ведет)
Они, конечно, не будут заблокированы вечно. СУБД через разумный промежуток времени откатит эту "зависшую" транзакцию и снимет блокировки. Однако это все таки будет промежуток времени.
Транзакция с сервера будет выполнена даже если клиент умрет страшной смертью
...
Рейтинг: 0 / 0
Организация запросов из десктопного клиента к субд
    #38057050
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
MasterZivCat2Хранимые процедуры всегда будут чуть быстрее, так как они уже откомпилированы и для них обязательно создан план запроса.


Это сильно зависит от СУБД.
Подготовленные запросы также во многих СУБД откомпилированы.
Планы некоторые СУБД кэшируют и для простых запросов, а не только для процедур.
Не все запросы простые.
...
Рейтинг: 0 / 0
Организация запросов из десктопного клиента к субд
    #38057057
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
MasterZivKorbanz,

В общем, подытоживая, могу предложить следующий "решатель" проблемы.

если надо использовать CRUD -запросы (CreateReadUpdateDelete) и у тебя не одна поддерживаемая СУБД, стоит использовать ORM.

Если надо писать только аналитические запросы (SELECT-ы ) то ORM применять бесполезно

если поддерживается только одна СУБД, стоит писать код в виде хранимых процедур. если поддерживается одна-две СУБД, можно тоже писать код в виде хранимых процедур, несколько раз, для каждой СУБД свой вариант. Естественно, только если процедур немного (10-20).

если запросов много, и много поддерживаемых СУБД, (и запросы аналитические, естественно), то лучше подумать о оформлении кода SQL на клиенте напрямую на SQL в виде универсального, стандартного SQL-я, иногда это получаться не будет, тогда надо писать конкретный запрос в N вариантах, для каждой СУБД.

Не согласен ни с одним пунктом.
...
Рейтинг: 0 / 0
Организация запросов из десктопного клиента к субд
    #38057058
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Алексей КИмею самописный несложный кодогенератор, удобный для дальнейшей поддержки и модификации.
+1 тоже
...
Рейтинг: 0 / 0
Организация запросов из десктопного клиента к субд
    #38057083
kmaw
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cat2MasterZivпропущено...


Ну, это ты не прав. Просто не прав.
Может что-то ещё бы привёл в виде примера -- я бы согласился.
Но не транзакции.
Допустим мы открываем транзакцию на клиенте из двух запросов.
В промежутке между ними отвалилась сеть.
Первый запрос заблокировал какие-то ресурсы. (я знаю про версионники! Но и в этом случае незавершенная транзакция ни к чему хорошему не ведет)
Они, конечно, не будут заблокированы вечно. СУБД через разумный промежуток времени откатит эту "зависшую" транзакцию и снимет блокировки. Однако это все таки будет промежуток времени.
Транзакция с сервера будет выполнена даже если клиент умрет страшной смертью

то есть клиент отправил запрос серверу приложений, отвалился, сервер приложений его выполнил (или не выполнил). в чем проблема?
...
Рейтинг: 0 / 0
Организация запросов из десктопного клиента к субд
    #38057086
kmaw
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
блин, извиняюсь, не сразу понял что тоже самое писал
...
Рейтинг: 0 / 0
Организация запросов из десктопного клиента к субд
    #38057247
thunder2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Алексей КМСУИспользовать ORM.LINQ2SQL!
А почему не EntityFramework ?
...
Рейтинг: 0 / 0
Организация запросов из десктопного клиента к субд
    #38057301
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
netivanАлексей К,

все равно не согласен, медленнее будет полюбому, даже пусть 5 секунд против 2. Тут я делаю один запрос и получаю быстро то что надо. а тут надо будет делать 1000, а если у меня 1000 таких в секунду что получаем? Вообщем вывод - то какой- orm не на все способен.Пусть оно будет чуть медленнее, зато на сервер БД нагрузка более равномерная при многопользовательской работе. Транзакции получаются короче. Пока данные гоняются по сети СУБД "отдыхает" и готова принимать запросы от других пользователей. Поэтому я и говорю "медленно но верно".

netivanДумаю на этом надо завершить дискуссию.Ваше право. :-)
...
Рейтинг: 0 / 0
Организация запросов из десктопного клиента к субд
    #38057302
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cat2Алексей Кпропущено...
Вы что-то путаете. Мы с МСУ никогда не ругались. Все наши с ним дискуссии всегда были в рамках приличия.
Прошу прощения. Они с SeVa ругаются Принято. :-)
...
Рейтинг: 0 / 0
Организация запросов из десктопного клиента к субд
    #38057303
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cat2MasterZivпропущено...


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


Ну, это ты не прав. Просто не прав.
Может что-то ещё бы привёл в виде примера -- я бы согласился.
Но не транзакции.
Допустим мы открываем транзакцию на клиенте из двух запросов.
В промежутке между ними отвалилась сеть.
Первый запрос заблокировал какие-то ресурсы. (я знаю про версионники! Но и в этом случае незавершенная транзакция ни к чему хорошему не ведет)
Они, конечно, не будут заблокированы вечно. СУБД через разумный промежуток времени откатит эту "зависшую" транзакцию и снимет блокировки. Однако это все таки будет промежуток времени.
Транзакция с сервера будет выполнена даже если клиент умрет страшной смертью Повторюсь . Между СП и БД хороший канал связи. Disconnected-режим работы с БД практически исключает такие случаи. Проблема надумана.
...
Рейтинг: 0 / 0
Организация запросов из десктопного клиента к субд
    #38057309
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cat2Но даже если и знают, то не смогут сделать ничего того, что не позволдяют сделать хранимки. Повторюсь. Система безопасности не ограничивает управление транзакциями.
...
Рейтинг: 0 / 0
Организация запросов из десктопного клиента к субд
    #38057311
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
thunder2Алексей Кпропущено...
LINQ2SQL!
А почему не EntityFramework ?Имелись ввиду все LINQ-ORM.
...
Рейтинг: 0 / 0
Организация запросов из десктопного клиента к субд
    #38057406
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cat2Получить может. Соединится не может.
Как это не может, если сиквел соединение у тебя работает в контексте виндовой аутентификации?

Cat2Никакого доступа из Excelя не получится, если доступ дается не через разрешения на иаблицы, а через разрешения на ХП.
Всё, что связано с БД - через хранимые процедуры? Проще убить себя об стену, чем писать даже самые тривиальные вещи на хп. В топку такую архитектуру. Во-вторых, как было уже сказано, транзакции вне безопасности, поэтому никто не запрещает пользователю начать транзакцию и уйти курить бабмбук. В-третьих, какого вообще ляда пользователю даже видеть, что там оно в базе? Хранилище должно хоститься в отдельной песочнице, не доступной для кого-то нибыло, не говоря уже про всех пользователей домена (системы).

Cat2Разумеется, если используется ОРМ, то кому-то будут даны прямые права на таблицы и можно будет, при известных знаниях, лазать к базе чем угодно.
Глупости. ORM так же отлично работает с хранимыми процедурами.

Cat2При использовании хранимых процедур пользователи не знают их названий и не знают их параметров.
Им вообще ничего нельзя знать.

Cat2Но даже если и знают, то не смогут сделать ничего того, что не позволдяют сделать хранимки.
Открыть и оставить транзакцию? Еще раз, пользователям нечего делать в базе. Даже если они будут играть по правилам хранимок и лазить через них к данным, ни к чему хорошему это не приведет. Всегда найдется узкое место, в котором хранимка отдает один результат (расширенный функционал), а ПО другой (урезанный функционал). Всё это накладывает очень сложный и порой практически не поддерживаемый опционал в разрезе администрирования системы. Зачем и кому нужны эти проблемы? Не проще ли закрыться от всего внешнего зла средним слоем (WCF, ASMX) и жить спокойно? Это удобно и для других систем из других баз и SQL серверов - все мы знаем о зле, таящимся в слове "линкед сервер". Будешь шарить сервер для того, чтобы твои хп заюзали другие системы? В случае же SOA подхода - никаких линкедов, весь софт общается с хранилищем через единый документированный шлюз - потребители могут быть кто угодно, начиная от codemonkey-поделок, кончая всякими 1С, аксаптами, сапами, CRM, ECM, ERP и иже системами.

Cat2Ты как-то писал про "тупые хранилища". Приходится напомнить, что эти хранилища не тупые. Их можно тупо использовать и превратить в "тупые хранилища".
Хранилище должно быть тупым, средний слой (SOA) должен быть умным. Только так ты получишь распределение.

Cat2Настоящая правильно спроектированная база сама должна поддерживать целостность и непротиворечивость, огранирчения которой нельзя обойти никаким способом. Ну, разумеется, кроме снятия ограничений администратором.
Целостность и непротиворечивость хранилища делай на базовом уровне (связи, ключи). А бизнес-логику, интеграционный слой, распределение и т.п. - вне базы.
...
Рейтинг: 0 / 0
Организация запросов из десктопного клиента к субд
    #38057409
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей Кthunder2пропущено...
А почему не EntityFramework ?Имелись ввиду все LINQ-ORM.
Что такое LINQ-ORM? :) EF, L2S, NH - это тоже всё LINQ-ORM.
...
Рейтинг: 0 / 0
Организация запросов из десктопного клиента к субд
    #38057426
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУАлексей Кпропущено...
Имелись ввиду все LINQ-ORM.
Что такое LINQ-ORM? :) EF, L2S, NH - это тоже всё LINQ-ORM.Все ОРМ, поддерживающие трансляцию Expression Tree => SQL.

Какая теперь разница... :-)
...
Рейтинг: 0 / 0
Организация запросов из десктопного клиента к субд
    #38057500
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КВсе ОРМ, поддерживающие трансляцию Expression Tree => SQL
ORM с трансляцией вида [гавномаппинги] => [SQL] идут на помойку?
...
Рейтинг: 0 / 0
Организация запросов из десктопного клиента к субд
    #38057507
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУАлексей КВсе ОРМ, поддерживающие трансляцию Expression Tree => SQL
ORM с трансляцией вида [гавномаппинги] => [SQL] идут на помойку? Да. Их эра закончилась.
...
Рейтинг: 0 / 0
Организация запросов из десктопного клиента к субд
    #38057603
netivan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КnetivanАлексей К,

все равно не согласен, медленнее будет полюбому, даже пусть 5 секунд против 2. Тут я делаю один запрос и получаю быстро то что надо. а тут надо будет делать 1000, а если у меня 1000 таких в секунду что получаем? Вообщем вывод - то какой- orm не на все способен.Пусть оно будет чуть медленнее, зато на сервер БД нагрузка более равномерная при многопользовательской работе. Транзакции получаются короче. Пока данные гоняются по сети СУБД "отдыхает" и готова принимать запросы от других пользователей. Поэтому я и говорю "медленно но верно".

netivanДумаю на этом надо завершить дискуссию.Ваше право. :-)
Погодите, давайте разебремся. База в любом случае многопользовательская и она выполнит параллельно сколько надо запросов. Можно сказать,что в процедуре пакетный запрос, а вы предлагаете разбить его на Х маленьких. Не совсем все же понял логику)
ЗЫ Кстати спасибо вам за мысль про EF 4.2, и правда хорошая штука)
...
Рейтинг: 0 / 0
Организация запросов из десктопного клиента к субд
    #38057652
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КДа. Их эра закончилась.
То есть хиберовские hbm-маппинги, HSQL и ICriteria идут прямиком на свалку? Куясе.
...
Рейтинг: 0 / 0
Организация запросов из десктопного клиента к субд
    #38057680
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
netivanМожно сказать,что в процедуре пакетный запрос, а вы предлагаете разбить его на Х маленьких.Да. Только это всего-лиш один из возможных вариантов. Не надо это воспринимать как наиболее правильное решение. :-)

netivanЗЫ Кстати спасибо вам за мысль про EF 4.2, и правда хорошая штука)Всегда пожалуйста. :-)
...
Рейтинг: 0 / 0
Организация запросов из десктопного клиента к субд
    #38057690
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУАлексей КДа. Их эра закончилась.
То есть хиберовские hbm-маппинги, HSQL и ICriteria идут прямиком на свалку?Да.
МСУКуясе.Всё когда-то заканчивается.
...
Рейтинг: 0 / 0
Организация запросов из десктопного клиента к субд
    #38057714
netivan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей К,

да я все к тому,что EF далеко не на все способен) Вот кстати интересно хинты в нем можно ставить?:)
...
Рейтинг: 0 / 0
Организация запросов из десктопного клиента к субд
    #38057761
netivan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей К,

вы кстати не пробовали Ef 5 вашим способом вздрючить?)
...
Рейтинг: 0 / 0
Организация запросов из десктопного клиента к субд
    #38057766
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
netivanВот кстати интересно хинты в нем можно ставить?Традиционно, через вьюху.
...
Рейтинг: 0 / 0
Организация запросов из десктопного клиента к субд
    #38057772
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
netivanАлексей К,

вы кстати не пробовали Ef 5 вашим способом вздрючить?)Пробовал, не получилось

Он какой-то метод из класса Environment использует, который есть в 4.5 и которого нет в 4.0. Решил ждать следующей версии EF. Он теперь опенсорсный, что не может не радовать.
...
Рейтинг: 0 / 0
Организация запросов из десктопного клиента к субд
    #38057810
netivan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей К,

он еще помойму DataXXX что-то использует. Вообщем ждем следующей, согласен ) Вопрос когда она будет
...
Рейтинг: 0 / 0
Организация запросов из десктопного клиента к субд
    #38057885
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КМСУТо есть хиберовские hbm-маппинги, HSQL и ICriteria идут прямиком на свалку?Да
Это ещё SolYUtor не слышит, а то палкой бы побил ща такое беспощадие к hbm

P.S. Linq/Lambda/ExpressionTree-ориентированные мапы не панацея, отче. Какая по сути разница, какая обёртка в ORM, главное что-бы удобно было.
...
Рейтинг: 0 / 0
Организация запросов из десктопного клиента к субд
    #38057922
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУP.S. Linq/Lambda/ExpressionTree-ориентированные мапы не панацеяЭто большой шаг вперёд.
...
Рейтинг: 0 / 0
Организация запросов из десктопного клиента к субд
    #38058006
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ,

ОРМ в моем понимание весч простая такая -
я работаю со своими объектами и нифига не знаю о БД

но с ваших слов, это не так - надо знать какие то хранимки, вьюхи, сте (слово то какое) и т.д.
и притом в каких то случаях надо не объектами своими работать, а с их суррогатами (трекинг твой как раз управляет этим как я понял),
нектороые объекты как бы и не объекты вовсе (табличка в памяти у НЕТИВАНа) и т.д.
потому грю что - ерунда это,токо время отнимает

2 Алексею
ОРМ нужен был ток для того, чтоб прогер не думал о синхронизации состояний объектов в памяти и в БД (а это в основном целосностное изменение-запись - удаление), с селект мало у кого проблемы были, а вот с остальным (особенно в БД с наворочеными ОЦ) были, до сих пор мало кто разумеет что исть транзакшн и т.д.
но ваши ОРМ неспособные все это делать прозрачно, они просто вызывают ваши ХП (как будьто без них низзя было их вызывать)

понятно грю?
...
Рейтинг: 0 / 0
Организация запросов из десктопного клиента к субд
    #38058012
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
у меня и к Объектам (ООП) тоже немало претензийи и к РМД, если б они были нормальные, то и проблемы бы с маппингом не появлялись
...
Рейтинг: 0 / 0
Организация запросов из десктопного клиента к субд
    #38058118
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViPRosя работаю со своими объектами и нифига не знаю о БД
Сахаватище, друх сердешный, твоё поделие - динамический конструктор, с помощью которого можно дизайнить предметную область и иже с ним. Тут чистая динамика, поэтому ORM тут как кобыле пятое колесо. Так что в твоём случае ридеры форевер.
ORM применима только для заранее известных объектов хранилища. Если у тебя 50 на 50 (динамика / типизация), то имеет смысл миксовать ридеры + ORM.
...
Рейтинг: 0 / 0
Организация запросов из десктопного клиента к субд
    #38058243
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ,

тут "я" это вовсе не я - "прогер любой" имелся ввиду и мое "поделие" не при чем
...
Рейтинг: 0 / 0
Организация запросов из десктопного клиента к субд
    #38058311
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViPRosМСУ,
тут "я" это вовсе не я - "прогер любой" имелся ввиду и мое "поделие" не при чем
Что не ясно из моего ответа про динамику vs тайпед?
...
Рейтинг: 0 / 0
Организация запросов из десктопного клиента к субд
    #38058427
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ,

да мне то все ясно давно
людишки вот мечутся, как в эти "тайпед" (в переводе с хантимансийского - мертвый) жисть вдувать
...
Рейтинг: 0 / 0
Организация запросов из десктопного клиента к субд
    #38058606
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViPRosМСУ, да мне то все ясно давно
Умный дядя, хвалю.

ViPRosлюдишки вот мечутся, как в эти "тайпед" (в переводе с хантимансийского - мертвый) жисть вдувать
Людишки еще не доросли до этого, вот и мечутся. А нормальные люди сидят ровно на жопе, гоняют чаи и неторопливо накидывают сущности в дизайнер EF.
...
Рейтинг: 0 / 0
Организация запросов из десктопного клиента к субд
    #38058689
netivan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ,

Нормальные люди CodeFirst генерят %)
...
Рейтинг: 0 / 0
Организация запросов из десктопного клиента к субд
    #38059160
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
netivanМСУ,

Нормальные люди CodeFirst генерят %)++
...
Рейтинг: 0 / 0
Организация запросов из десктопного клиента к субд
    #38059189
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КnetivanМСУ,

Нормальные люди CodeFirst генерят %)++
Гумно, ибо без дизайнера
...
Рейтинг: 0 / 0
Организация запросов из десктопного клиента к субд
    #38060616
17-77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУЯ ж тебе сказал, если у тебя DTO или что-то еще - все обновления через новый контекст. Что непонятно? ORM не будут работать с левыми классами.

да неужели? америку открыл просто, так проблема в том, чтоб заставить ORM работать с левыми классами, так как отображение идет в виде DTO, которое плоское, а обрабатывать надо Entity, которое с вложенными классами

МСУОткуда информация по утечкам? Где факты, а не сопли на голом сене?

факты были во время разработки и отладке метода, в виде окошка с экспешеном

МСУА причем тут EF? Во-вторых, длина запроса называется батчем. В-третьих, выше я тебе пальцем ткнул на 3 варианта, как сделать, чтобы непересвопить батч, мало?

я и не говорил что EF виноват, ошибку с длиной запроса выдавал MS SQL, читай внимательней

МСУДаже двоешники знают чудесные 3 буквы - SOA. Не сылхал? Срочно открывай букварь и начинай штудировать WCF и ASMX, а то так бездарем и помрешь.

xDDD а SOA/WCF - это что по твоему? не слой приложений/служб который 3-tier? мда...

МСУПричем тут протоколы с XML и ORM? Ты не вписываешься в повороты, заносит то влево то вправо.

при том, что было обсуждение 3-tier наряду с ORM

МСУНужно отрефрешить контекст, и чё дальше-то? Код я не пишу. Про несколько минут ты гонишь, разумеется.

разумеется не гоню, открыть дизайнер, нажать кнопку обновления контекста, выбрать там таблицу для обновления -> тупит порядочно, и занимает 2-3-5 минут

МСУДа какая в жопу разница, чья эта база. На девелоперских стендах также присутствуют данные, которые важны для отладки и тестирования, зачем их сносить?

ну не сноси, я тебе что запрещаю?

МСУВо-вторых, ты уже сам запутался, сначала говоришь про продакшен, теперь говоришь, что я опять не так понял, и речь, оказывается, уже о девелоперской базе. Я не могу уследить за потоком твоего сознания, определись с мыслями.

Во-вторых, не всегда разработка ведется со своей "чистой" базой. Ты не подумал о том, что есть корпоративные платформенные решения со своими БД (MS Dynamics CRM, SharePoint, Axapta, ECM'ы и т.д.)? Тут уже не удалишь базу, батенька.

что ж так? еще раз, повторяю - изначально я имел ввиду девелоперскую базу, а ты поднял вопрос обновления данных, в это случае - неважно какой подход используется - в любом случае надо генерить скрипт обновления данных, в некоторых случаях и там и там можно обойтись тупо добавлением столбца (например он null), и все это действительно, в том числе, и для Dynamics / SharePoint

МСУА я и не отрицал сего факта - code-first отстой. Засекал - добавить десяток сущностей в контекст 10 секунд (время тупо на выбрать нужные объекты)
а время на создание таблиц в БД забыл? тоже все за 10 секунд, т.е. по секунде на таблицу? ну ты герой, считай секунды лучше

МСУА теперь ты засеки, сколько раз у тебя будет заново пересоздаватья гигобайтная база для того, чтобы тупо добавить поле.

в гигабайтную базу поле я добавлю скриптом, точно так же как и ты для EF, только потом ты пойдешь в дизайнер, и будешь ждать 2-3 минуты обновления контекста, а я добавлю две строчки кода, одна - это само поле в класс, вторая - это маппинг этого поля

МСУВо-вторых, у тебя уже есть сегодняшние наработанные тестовые данные, нужные для разработки, которые похерятся. Ручками заново будешь их вколачивать? Убей себя, серьезно.

конечно есть, в скриптах, когда я жму развернуть базу, заодно разворачиваются тестовые данные
на большую тестовую базу (гигабайтную) - структура БД обновляется скриптами, которые сгенерили руками, и, _еще_раз_, это нужно будет сделать как при использовании EF так и NH

-----

Алексей КДля сохранения можно самостоятельно, без EF, генерить SQL-батчи. Использовать для этого EF никто не заставляет. Не нужно вставлять "всё" в один батч, чтобы MSSQL не ругался на его размеры.

я понимаю что можно, тогда я тупо выкину ORM, зачем она нужна, и да там в некоторых местах была сделана пакетная обработка по 5000-10000 записей, но это тупо костыль

Алексей Кзы: Странная архитектура. Может она причина всех бед?

накладывать ООП на реляционные БД - вообще штука странная
...
Рейтинг: 0 / 0
Организация запросов из десктопного клиента к субд
    #38060738
sphinx_mv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мартин Фаулер :
I've often felt that much of the frustration with ORMs is about inflated expectations.
(наибольшее разочарование от ORM заключается в завышенных ожиданиях)

Джимми Богард (соавтор ASP.NET MVC in Action) в "Choosing an ORM strategy"
We have to move past the idea that ORMs are bad or ugly or bloatware.
(мы должны смириться с мыслью о том, что ORM являются плохими, уродливыми и перегруженными)

и завершающий аккорд - Туполев, Андрей Николаевич (авиаконструктор):
Хорошо летать могут только красивые самолеты
...
Рейтинг: 0 / 0
Организация запросов из десктопного клиента к субд
    #38061661
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
17-77да неужели? америку открыл просто, так проблема в том, чтоб заставить ORM работать с левыми классами, так как отображение идет в виде DTO, которое плоское, а обрабатывать надо Entity, которое с вложенными классами
С какого перепугу ORM должна работать с левыми классами? Заставишь поработать ORM, скажем, с классом Thread?

17-77МСУОткуда информация по утечкам? Где факты, а не сопли на голом сене?

факты были во время разработки и отладке метода, в виде окошка с экспешеном
Очень весомые доказательства. Это всё?

17-77я и не говорил что EF виноват, ошибку с длиной запроса выдавал MS SQL, читай внимательней
А зачем тогда пишешь про это?

17-77xDDD а SOA/WCF - это что по твоему? не слой приложений/служб который 3-tier? мда...
Ты это к чему ляпнул?

17-77МСУПричем тут протоколы с XML и ORM? Ты не вписываешься в повороты, заносит то влево то вправо.

при том, что было обсуждение 3-tier наряду с ORM
И? Не вижу выводов. Ты констатируешь факты, а выводов нет. Ну трехзвенка, ORM... Что дальше?

17-77разумеется не гоню, открыть дизайнер, нажать кнопку обновления контекста, выбрать там таблицу для обновления -> тупит порядочно, и занимает 2-3-5 минут
Только что открыл дизайнер, обновил контекст, обновилось за 3 секунды. Что я делаю не так?

17-77МСУДа какая в жопу разница, чья эта база. На девелоперских стендах также присутствуют данные, которые важны для отладки и тестирования, зачем их сносить?

ну не сноси, я тебе что запрещаю?
А как тогда база заново обновится?

17-77что ж так? еще раз, повторяю - изначально я имел ввиду девелоперскую базу, а ты поднял вопрос обновления данных
Я тебе уже 10 раз сказал, что не важно какая база, девелоперская или продакшен.

17-77в это случае - неважно какой подход используется - в любом случае надо генерить скрипт обновления данных, в некоторых случаях и там и там можно обойтись тупо добавлением столбца (например он null), и все это действительно, в том числе, и для Dynamics / SharePoint
Глупости. Никаких скриптов обновления данных генерить не нужно. А по поводу добавления столбца - верно. Так вот я добавил его, подсунул обновленный контекст и всё заработало. В чем проблема?

17-77а время на создание таблиц в БД забыл? тоже все за 10 секунд, т.е. по секунде на таблицу? ну ты герой, считай секунды лучше
Только идиоты под каждый чих пересоздают таблицы в БД. Так что ты чё-то не в кассу сказал.

17-77в гигабайтную базу поле я добавлю скриптом, точно так же как и ты для EF, только потом ты пойдешь в дизайнер, и будешь ждать 2-3 минуты обновления контекста, а я добавлю две строчки кода, одна - это само поле в класс, вторая - это маппинг этого поля
Еще раз - про 2-3 минуты - бред сивой кобылы, схема обновляется молниеносно. И я не пишу никакого кода руками, а в стоем случае есть вероятность ошибиться в коде при добавления нового свойства с атрибутами, и эта ошибка может всплыть далеко не сразу. В моем же случае всё автоматом создается на основе структуры в БД, никаких ошибок.

17-77конечно есть, в скриптах, когда я жму развернуть базу, заодно разворачиваются тестовые данные
на большую тестовую базу (гигабайтную) - структура БД обновляется скриптами, которые сгенерили руками, и, _еще_раз_, это нужно будет сделать как при использовании EF так и NH
Развернуть БД из контекста нах не нужно в обсуждаемой теме.

17-77накладывать ООП на реляционные БД - вообще штука странная
Накладывают ООП на бизнес-логику, а не на реляционные данные.
...
Рейтинг: 0 / 0
Организация запросов из десктопного клиента к субд
    #38061665
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sphinx_mv Мартин Фаулер :
I've often felt that much of the frustration with ORMs is about inflated expectations.
(наибольшее разочарование от ORM заключается в завышенных ожиданиях)

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


sphinx_mvДжимми Богард (соавтор ASP.NET MVC in Action) в "Choosing an ORM strategy"
We have to move past the idea that ORMs are bad or ugly or bloatware.
(мы должны смириться с мыслью о том, что ORM являются плохими, уродливыми и перегруженными)

Шагом марш учить английский язык -
Джимми БогардМы должны отказаться от мысли, что ORM плохо, уродливо или мертво. Для решения проблем имеется много различных вариантов для этого. Но прежде чем мы рассмотрим эти варианты, давайте посмотрим на эту проблему с конкретики. ...
Поржал.

sphinx_mvи завершающий аккорд - Туполев, Андрей Николаевич (авиаконструктор):
Хорошо летать могут только красивые самолеты

Правильно, ORM - это красивые самолеты.
...
Рейтинг: 0 / 0
Организация запросов из десктопного клиента к субд
    #38062092
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
17-77Алексей КДля сохранения можно самостоятельно, без EF, генерить SQL-батчи. Использовать для этого EF никто не заставляет. Не нужно вставлять "всё" в один батч, чтобы MSSQL не ругался на его размеры.

я понимаю что можно, тогда я тупо выкину ORM, зачем она нужна , и да там в некоторых местах была сделана пакетная обработка по 5000-10000 записей,Для других задач.
17-77но это тупо костыльНет, оптимизация.
17-77Алексей Кзы: Странная архитектура. Может она причина всех бед?

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


Проблема в том, что ты свой незамысловатый опыт говнокодера для лапидарных баз порносайта, пытаешься обобщит на все и вся.
Попробуй добавить столбец с not null без скриптов обновления данных. Это простейший вариант, не было и не будет ни одной тулзовины, которая будет генерить нормальные скипты на обновление в общем случае.
...
Рейтинг: 0 / 0
Организация запросов из десктопного клиента к субд
    #38062144
SeVa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУШагом марш учить английский язык -
Джимми БогардМы должны отказаться от мысли, что ORM плохо, уродливо или мертво. Для решения проблем имеется много различных вариантов для этого. Но прежде чем мы рассмотрим эти варианты, давайте посмотрим на эту проблему с конкретики. ...
Поржал.


В статье помимо EF&Hibernate рассматриваются совсем другие варианты(каждый из которых имеет свои плюсы\минусы и области применения), но в итоге вывод такой же как Фаулера - все УГ.

EF пригоден только для твоих базенок в пять таблиц
...
Рейтинг: 0 / 0
Организация запросов из десктопного клиента к субд
    #38062158
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SeVaВ статье помимо EF&Hibernate рассматриваются совсем другие варианты(каждый из которых имеет свои плюсы\минусы и области применения), но в итоге вывод такой же как Фаулера - все УГ.В обоих статьях про LINQ ни слова. Почему?
...
Рейтинг: 0 / 0
Организация запросов из десктопного клиента к субд
    #38062163
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SeVaПроблема в том, что ты свой незамысловатый опыт говнокодера для лапидарных баз порносайта, пытаешься обобщит на все и вся.
Проблема в том, что твой моск уже слишком стар, чтобы осознавать этот опыт.

SeVaПопробуй добавить столбец с not null без скриптов обновления данных. Это простейший вариант, не было и не будет ни одной тулзовины, которая будет генерить нормальные скипты на обновление в общем случае.
Можешь сходить в детский сад, там дети тебя научат добавлять null-колонку с дефолтным значением.

SeVaВ статье помимо EF&Hibernate рассматриваются совсем другие варианты(каждый из которых имеет свои плюсы\минусы и области применения), но в итоге вывод такой же как Фаулера - все УГ.
Если всё УГ - можешь заняться земледелием.

SeVaEF пригоден только для твоих базенок в пять таблиц
EF пригоден только тем, кто понимает его ценность и незаменимость. Сначала почитай в букваре, что такое "Default Value or Binding", а потом расскажешь нам про 5 таблиц. Шагом марш зубрить.
...
Рейтинг: 0 / 0
Организация запросов из десктопного клиента к субд
    #38062276
SeVa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУSeVaПроблема в том, что ты свой незамысловатый опыт говнокодера для лапидарных баз порносайта, пытаешься обобщит на все и вся.
Проблема в том, что твой моск уже слишком стар, чтобы осознавать этот опыт.

SeVaПопробуй добавить столбец с not null без скриптов обновления данных. Это простейший вариант, не было и не будет ни одной тулзовины, которая будет генерить нормальные скипты на обновление в общем случае.
Можешь сходить в детский сад, там дети тебя научат добавлять null-колонку с дефолтным значением.

SeVaВ статье помимо EF&Hibernate рассматриваются совсем другие варианты(каждый из которых имеет свои плюсы\минусы и области применения), но в итоге вывод такой же как Фаулера - все УГ.
Если всё УГ - можешь заняться земледелием.

SeVaEF пригоден только для твоих базенок в пять таблиц
EF пригоден только тем, кто понимает его ценность и незаменимость. Сначала почитай в букваре, что такое "Default Value or Binding", а потом расскажешь нам про 5 таблиц. Шагом марш зубрить.

Мусафаил, ты умеешь веселить. Давай чуть усложним задачу, представь себе, что на твоем сайте решили расширить сферу услуг и к девочкам добавили мальчиков по вызову для выгребных ям. Напряги мышцы, на которых ты сидишь, и выдай на гора, что ставить в качестве "Default Value" для поля Тип услуг.
...
Рейтинг: 0 / 0
Организация запросов из десктопного клиента к субд
    #38062365
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SeVaМусафаил, ты умеешь веселить. Давай чуть усложним задачу, представь себе, что на твоем сайте решили расширить сферу услуг и к девочкам добавили мальчиков по вызову для выгребных ям. Напряги мышцы, на которых ты сидишь, и выдай на гора, что ставить в качестве "Default Value" для поля Тип услуг.
Сева, твоя унылая логика непоколебима - давай усложним задачу, отчего же. Был справочник девочек, теперь нужны малтчики - добавляем новое поле тип (мальчик / девочка), по-дефолту будет девочка. В справочник мальчиков еще не заливали, поэтому новый тип у нас правильный. Всё, not null поле новое создано.
Потом доливаем мальчиком с другим типом и даруемся в жизни. В основной сущности сфер услуг ничего не меняется, т.к. используется референсный айдишник из справочника девочек (теперь уже и мальчиков).
Ты настолько убог, что даже нормальный пример не смог придумать, где действительно нужен скрипт по обновлению данных. Но даже и в этом случае всё намного проще - поле добавить всегда можно, а как потом ты его проапдейтишь из своего C#-говноцикла, твои проблемы. Ты смешон.
...
Рейтинг: 0 / 0
Организация запросов из десктопного клиента к субд
    #38062447
SeVa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУSeVaМусафаил, ты умеешь веселить. Давай чуть усложним задачу, представь себе, что на твоем сайте решили расширить сферу услуг и к девочкам добавили мальчиков по вызову для выгребных ям. Напряги мышцы, на которых ты сидишь, и выдай на гора, что ставить в качестве "Default Value" для поля Тип услуг.
Сева, твоя унылая логика непоколебима - давай усложним задачу, отчего же. Был справочник девочек, теперь нужны малтчики - добавляем новое поле тип (мальчик / девочка), по-дефолту будет девочка. В справочник мальчиков еще не заливали, поэтому новый тип у нас правильный. Всё, not null поле новое создано.
Потом доливаем мальчиком с другим типом и даруемся в жизни. В основной сущности сфер услуг ничего не меняется, т.к. используется референсный айдишник из справочника девочек (теперь уже и мальчиков).
Ты настолько убог, что даже нормальный пример не смог придумать, где действительно нужен скрипт по обновлению данных. Но даже и в этом случае всё намного проще - поле добавить всегда можно, а как потом ты его проапдейтишь из своего C#-говноцикла, твои проблемы. Ты смешон.

Мусафаил, сразу видно, что тебя к работающему продакшену даже близко не подпускали.
ПОдобные апдейты делают без останова, чтобы девочки не простаивали и не было потери в деньгах. Так только пионеры изголяться могут.

Черпак тебе никто не даст, ты только у своей выгребной ямы стоять можешь, к которой без противогаза никто больше не подойдет за версту.
...
Рейтинг: 0 / 0
Организация запросов из десктопного клиента к субд
    #38062519
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SeVaМусафаил, сразу видно, что тебя к работающему продакшену даже близко не подпускали.
Сразу понятно, что ты о продакшене только в букварях читал.

SeVaПОдобные апдейты делают без останова, чтобы девочки не простаивали и не было потери в деньгах. Так только пионеры изголяться могут.
Для тех, кто в танк засел надолго - апдейты разные бывают, ты сам начал "усложнять" задачу.

SeVaЧерпак тебе никто не даст, ты только у своей выгребной ямы стоять можешь, к которой без противогаза никто больше не подойдет за версту.
Ты как сидел голой жопой в канализации с миской риса, так и сидишь - тут и противогаз не поможет. Проще утопиться в своих же фекалиях. Да?
...
Рейтинг: 0 / 0
Организация запросов из десктопного клиента к субд
    #38062702
SeVa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ
SeVaПОдобные апдейты делают без останова, чтобы девочки не простаивали и не было потери в деньгах. Так только пионеры изголяться могут.
Для тех, кто в танк засел надолго - апдейты разные бывают, ты сам начал "усложнять" задачу.


Ты продолжаешь веселить. Какие еще усложнения? Без этого тебе даже крышку люка не дадут открыть.

ЗЫ В нормальных конторах помимо скриптов на изменение еще обязательно присутствуют скрипты для отката, версионность(на разных БД может быть разные версии), тестирование, интеграция с автоматическим билдом и развертыванием, etc.

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

SeVaЗЫ В нормальных конторах помимо скриптов на изменение еще обязательно присутствуют скрипты для отката, версионность(на разных БД может быть разные версии), тестирование, интеграция с автоматическим билдом и развертыванием, etc.
Откуда знаешь? Ведь далmше своего газетного ларька не видел-то. Нагуглил?

SeVaМогут это твои танчики для детской песочницы?
Чудо, скрипты могут быть на чем угодно написаны. Тебя видимо переклинило на SQL, бегом читать про класс DbMigration, неуч.
...
Рейтинг: 0 / 0
Организация запросов из десктопного клиента к субд
    #38062726
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для ленивых танкистов: EF 4.3 Code-Based Migrations Walkthrough
...
Рейтинг: 0 / 0
Организация запросов из десктопного клиента к субд
    #38062887
17-77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУС какого перепугу ORM должна работать с левыми классами? Заставишь поработать ORM, скажем, с классом Thread?

иди еще раз почитай обсуждение, особенно насчет DTO, который и является левым классом для ORM

МСУОчень весомые доказательства. Это всё?

да

МСУ17-77я и не говорил что EF виноват, ошибку с длиной запроса выдавал MS SQL, читай внимательней
А зачем тогда пишешь про это?

17-77xDDD а SOA/WCF - это что по твоему? не слой приложений/служб который 3-tier? мда...
Ты это к чему ляпнул?

читай до тех пор, пока не поймешь, что к чему, не люблю глупости объяснять по 100 раз

МСУИ? Не вижу выводов. Ты констатируешь факты, а выводов нет. Ну трехзвенка, ORM... Что дальше?

аналогично

МСУТолько что открыл дизайнер, обновил контекст, обновилось за 3 секунды. Что я делаю не так?

я откуда знаю, не там считаешь, считай полностью:
1. открытие дизайнера
2. открытие окна подключения к базе
3. время пока это окно обратиться к БД, считает структуру и отобразит тебе дерево объектов
4. поиск нужного объекта
5. выделение галкой
6. нажатие кнопки ОК и ожидание результата

МСУГлупости. Никаких скриптов обновления данных генерить не нужно. А по поводу добавления столбца - верно. Так вот я добавил его, подсунул обновленный контекст и всё заработало. В чем проблема?

епрст, данные не надо обновлять при обновлении структуры базы xD, а мужики-то и не знают
1. добавление колонки not-null, ты там дальше вспоминаешь про дефолтное значение столбца, так вот запомни раз и навсегда - в данном случае это костыль для ленивых программистов, которым насрать на проект или начльник требует сделать побыстрому, дефолтное значение используется для других случаев, например это аналог переноса бизнес-логики в базу данных, в частности - например когда в таблицу пишет некая внешняя система и требуется устанавливать поля в дефолтные значения при отсутствии значений
2. обновление данных может затрагивать более сложные случаи - например
* смена many-to-one, на many-to-many
* добавление not-null столбца, значение которого зависит от некоторых других данных и дефолтного значения там быть не может, например направление (входщий/исходящий), направление "не определено" ака дефолтное значение - это тупо опять костыль, который потом исправлять скриптом обновления данных или иным быстрым способом, потому что пользователям будет лень тыкать кнопки для 10к записей

МСУТолько идиоты под каждый чих пересоздают таблицы в БД. Так что ты чё-то не в кассу сказал.

мда, жесть, еще раз

МСУА я и не отрицал сего факта - code-first отстой. Засекал - добавить десяток сущностей в контекст 10 секунд (время тупо на выбрать нужные объекты)

говорил такое? говорил, так вот при подходе database-first - у тебя нет таблиц в базе (а в начале проекта даже базы нет), ты сначала идешь в СУБД, создаешь через какую-нибудь managment studio базу, потом таблицы, поля там набиваешь, потом идешь в visual studio, в дизайнер EF, и только потом пытаешься их добавить в модель данных EF

и ты мне тут заливаешь про 10 секунд еще, ага на создание базы и десяти таблиц в базе руками, герой

МСУРазвернуть БД из контекста нах не нужно в обсуждаемой теме.

она у тебя из дзена появится?

МСУНакладывают ООП на бизнес-логику, а не на реляционные данные.
опа, а чего ты мне тут тогда втираешь про ORM и EF в частности?
...
Рейтинг: 0 / 0
Организация запросов из десктопного клиента к субд
    #38062927
17-77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КДля других задач.
хм, интересно и для каких?

Алексей КНет, оптимизация.
все не так однозначно, ORM является абстракцией, и если в этой абстракции отсутствует проверка на ограничение длины запроса для некой БД - это будет именно костылем, чтобы исправить ситуацию, которой не должно было быть, по правильному - ORM должна сама определить по типу БД максимальную длину запроса и организовать операцию так, чтобы не превысить это значение

Алексей КДа я не про это. Странно, что приходится производить масштабные изменения данных, уже хранящихся в БД. Масштабная вставка - да, но не масштабные изменения. Впрочем, Вам виднее.
так не очень понятно как вы предлагаете решить задачу в глобальном смысле? т.е. тут даже говорится о том, что средствами СУБД, внутри самой базы масштабно обновлять данные - есть плохо? ну а если надо? конкретно задача проверки ссылок URL, ссылки хранятся в базе, ссылка сегодня работает, завтра нет, надо их регулярно проверять, вопрос об адекватности требований заказчика / пользователя оставим в стороне
...
Рейтинг: 0 / 0
Организация запросов из десктопного клиента к субд
    #38062976
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
17-77иди еще раз почитай обсуждение, особенно насчет DTO, который и является левым классом для ORM
Сходил почитал. И?

17-77МСУОчень весомые доказательства. Это всё?

да
Бабушке своей "да" будешь говорить, а тут изволь аргументировать утечки памяти. Итак, еще раз, примеры, демонстрирующие утечки памяти в EF будут?

17-77читай до тех пор, пока не поймешь, что к чему, не люблю глупости объяснять по 100 раз
Жжешь. В том-то и проблемы, что ты глупости объясняешь по 100 раз

17-77МСУИ? Не вижу выводов. Ты констатируешь факты, а выводов нет. Ну трехзвенка, ORM... Что дальше?

аналогично
Чего аналогично, повторялка? Всё, сопли кончились, вопросом на вопрос стал отвечать?

17-77МСУТолько что открыл дизайнер, обновил контекст, обновилось за 3 секунды. Что я делаю не так?

я откуда знаю, не там считаешь, считай полностью:
1. открытие дизайнера
2. открытие окна подключения к базе
3. время пока это окно обратиться к БД, считает структуру и отобразит тебе дерево объектов
4. поиск нужного объекта
5. выделение галкой
6. нажатие кнопки ОК и ожидание результата
Вот лог генерации модели:
...Generated model file: Model.edmx.
Loading metadata from the database took 00:00:02.3613956.
Generating the model took 00:00:00.8512094.
Какие в жопу 2-3 минуты? Акстись.

[quot 17-77]епрст, данные не надо обновлять при обновлении структуры базы xD, а мужики-то и не знают[/quote
Так твои же слова, что надо. Более того, ты говорил о пересоздании базы данных. Ты уже сам запутался в своих бреднях.

17-771. добавление колонки not-null, ты там дальше вспоминаешь про дефолтное значение столбца, так вот запомни раз и навсегда - в данном случае это костыль для ленивых программистов, которым насрать на проект или начльник требует сделать побыстрому, дефолтное значение используется для других случаев, например это аналог переноса бизнес-логики в базу данных, в частности - например когда в таблицу пишет некая внешняя система и требуется устанавливать поля в дефолтные значения при отсутствии значений
Всё зависит от задачи. Если нужно быстро руками - это одно, если саппорту нужно отвесить скрипт - это другое, если миграцию (ETL) надо протянуть - это третье. Часто и ручное добавление колонки выручает, особенно на этапе разработки.

17-772. обновление данных может затрагивать более сложные случаи - например
* смена many-to-one, на many-to-many
* добавление not-null столбца, значение которого зависит от некоторых других данных и дефолтного значения там быть не может, например направление (входщий/исходящий), направление "не определено" ака дефолтное значение - это тупо опять костыль, который потом исправлять скриптом обновления данных или иным быстрым способом, потому что пользователям будет лень тыкать кнопки для 10к записей
Написал выше. Всё зависит от задачи. Я не протестую против скриптов.

17-77МСУТолько идиоты под каждый чих пересоздают таблицы в БД. Так что ты чё-то не в кассу сказал.

мда, жесть, еще раз
Да, жесть конечно.

17-77говорил такое? говорил, так вот при подходе database-first - у тебя нет таблиц в базе (а в начале проекта даже базы нет), ты сначала идешь в СУБД, создаешь через какую-нибудь managment studio базу, потом таблицы, поля там набиваешь, потом идешь в visul studio, в дизайнер EF, и только потом пытаешься их добавить в модель данных EF
Не я иду, а идет конкретный DB-разработчик, которому нах не нужно конкретное ПО, над которым трудятся C#-кодеры. Все занимаются своей работой. Разрабу, который пишет бизнес-логику, нах не уперлись твои поля в БД - ему нужны определенные классы в прикладном коде. А что там будет, сиквел или оракл - монопенисуально. Что дадут, то и будет. C#-кодер обновляет контекст и продолжает дальше концентрироваться на логике. И так далее.

17-77и ты мне тут заливаешь про 10 секунд еще, ага на создание базы и десяти таблиц в базе руками, герой
И того меньше. Речь о построении контекста, причем тут создание базы?

17-77она у тебя из дзена появится?
Да.

17-77опа, а чего ты мне тут тогда втираешь про ORM и EF в частности?
Опять ты невнимателен. Цитата не моя была, купи очик.
...
Рейтинг: 0 / 0
Организация запросов из десктопного клиента к субд
    #38063108
sphinx_mv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУsphinx_mv Мартин Фаулер :
пропущено...

Правильно, это относится к любой технологии. Нужно выбирать подходы исходя из потребностей и возможностей.
Материал Вами (как обычно) не прочитан... А если и прочитан, то (тоже как обычно) совершенно не понят...
МСУsphinx_mvДжимми Богард (соавтор ASP.NET MVC in Action) в "Choosing an ORM strategy"
пропущено...

Шагом марш учить английский язык -
Джимми БогардМы должны отказаться от мысли, что ORM плохо, уродливо или мертво. Для решения проблем имеется много различных вариантов для этого. Но прежде чем мы рассмотрим эти варианты, давайте посмотрим на эту проблему с конкретики. ...
Поржал.
Было бы это смешно - можно было бы и поржать, но, к ОЧЕНЬ большому сожалению, то что у Вас проблемы с чтением "языка оригинала" даже со словарем - давно задокументировано. И смех это уже давно совершенно не вызывает...

С каких пор "оставьте в прошлом" (дословно "по словарю") стало переводиться как "забудьте"? Ну, и с контекстным и идеоматическим переводом, когда вроде бы "по словарю" должен быть один смысл, а в контектсе получается совершенно другой - Вы тем более не знакомы...

Относительно контекста "оставьте в прошлом" совершенно не означает, что указанные недостатки - "пройденный этап" и их уже нет. Наоброт - они ВСЕ ЕЩЕ ЕСТЬ, и изменить это НЕВОЗМОЖНО - соотвественно, общий смысл этой фразы, кроме как "смиритесь", не восприниматься просто не может...

А, может, у Вас хватит дури утверждать, что ORM ни разу не "плохие"? И нигде не "перегруженные"? И совсем не "уродливые"? И Вы даже можете ЭТО (как-то) изменить?
Ну-ну... Поспорьте с Фаулером... Можно еще Теда Ньюарда (Ted Neward) с его "Вьетнамом компьютерных наук" (The Vietnam of Computer Science) поопровергать... (запасаюсь попкорном, чипсами и пивом)

Соотвественно, правильный (во всех смыслах) перевод этого абзаца звучит именно так:
Мы должны смириться с мыслью о том, что ORM являются плохими, уродливыми и перегруженными. ORM предназначены решать задачу и имеют множество разных подходов для этого. Но, перед тем как мы посмотрим на эти подходы, давайте изучим, какую же задачу мы пытаемся решить? Сильно горите желанием - могу дать ссылку на весь текст перевода. Там и "пообщаетесь" с переводчиком, хотя что-то мне подсказывает, что Вам там в лучшем случае предложат "пешее эротическое"...
МСУsphinx_mvи завершающий аккорд - Туполев, Андрей Николаевич (авиаконструктор):
пропущено...

Правильно, ORM - это красивые самолеты.Ожидаемо...
Говоришь блондинке "дура", а от нее в ответ "зато красивая" - но, хоть бы раз перед этим она в зеркало глянула...

Фаулер сказал... Богард сказал... Ньюард сказал... А МСУ все еще пыркается из говна конфеты делать...
С другой строны, чего еще от "золотаря информационных технологий" ожидать?!
...
Рейтинг: 0 / 0
Организация запросов из десктопного клиента к субд
    #38063118
sphinx_mv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КSeVaВ статье помимо EF&Hibernate рассматриваются совсем другие варианты(каждый из которых имеет свои плюсы\минусы и области применения), но в итоге вывод такой же как Фаулера - все УГ.В обоих статьях про LINQ ни слова. Почему?Потому, что LINQ непосредственного отношения к ORM не имеет.
Это встроенный язык запросов к объектам, реализующим на .NET (и только!) интерфейсы IEnumerable и IEnumerable<T>
...
Рейтинг: 0 / 0
Организация запросов из десктопного клиента к субд
    #38063271
17-77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУСходил почитал. И?

МСУЖжешь. В том-то и проблемы, что ты глупости объясняешь по 100 раз

МСУЧего аналогично, повторялка? Всё, сопли кончились, вопросом на вопрос стал отвечать?

с тобой не о чем разговаривать, ты даже не можешь проследить две линии обсуждения, и почитать еще раз чуть выше над словом "аналогично"

МСУКакие в жопу 2-3 минуты? Акстись.
в моем случае считывание структуры БД занимало продолжительно-раздражающее время

МСУТак твои же слова, что надо. Более того, ты говорил о пересоздании базы данных. Ты уже сам запутался в своих бреднях.

забывчивый ты наш, до этого уже разобрали случаи обновления и пересоздания

МСУНе я иду, а идет конкретный DB-разработчик, которому нах не нужно конкретное ПО, над которым трудятся C#-кодеры. Все занимаются своей работой. Разрабу, который пишет бизнес-логику, нах не уперлись твои поля в БД - ему нужны определенные классы в прикладном коде. А что там будет, сиквел или оракл - монопенисуально. Что дадут, то и будет. C#-кодер обновляет контекст и продолжает дальше концентрироваться на логике. И так далее.

а, вот оно что, тебе DB-разработчик попу подтирал, ясно теперь, ну вот спроси у него сколько времени заняла разработка структуры БД и включи это время в общее время для database-first подхода

МСУИ того меньше. Речь о построении контекста, причем тут создание базы?
тупой и еще тупее, читаем ниже до полного понимания
17-77так вот при подходе database-first - у тебя нет таблиц в базе (а в начале проекта даже базы нет), ты сначала идешь в СУБД, создаешь через какую-нибудь managment studio базу, потом таблицы
само название "database-first" предполагает, что сначала надо создать базу xDD

МСУ17-77опа, а чего ты мне тут тогда втираешь про ORM и EF в частности?
Опять ты невнимателен. Цитата не моя была , купи очик.
ого, окей, давай досвидания

МСУ Накладывают ООП на бизнес-логику, а не на реляционные данные.
13564358 в самом конце
...
Рейтинг: 0 / 0
Организация запросов из десктопного клиента к субд
    #38063304
SeVa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУДля ленивых танкистов: EF 4.3 Code-Based Migrations Walkthrough

Эту поделку придумали для уродцев, которые предлагают варианты с default value.
За одно это желтый билет с вещами на выход.

The Vietnam of Computer Science
...
Рейтинг: 0 / 0
Организация запросов из десктопного клиента к субд
    #38063497
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sphinx_mvМатериал Вами (как обычно) не прочитан... А если и прочитан, то (тоже как обычно) совершенно не понят...
Ты не можешь не то, что понять этот материал, ты даже не можешь идею материала вменяемо донести. Одно хлюпанье.

sphinx_mvБыло бы это смешно - можно было бы и поржать, но, к ОЧЕНЬ большому сожалению, то что у Вас проблемы с чтением "языка оригинала" даже со словарем - давно задокументировано. И смех это уже давно совершенно не вызывает...
Ты можешь свой оригинал утопить в унитазе, я тебе перевожу дословно, что имел ввиду автор. Все остальные слюни про идеоматическую дурь поскипал. Иди учись с букварём в первый класс.

sphinx_mvНу-ну... Поспорьте с Фаулером... Можно еще Теда Ньюарда (Ted Neward) с его "Вьетнамом компьютерных наук" (The Vietnam of Computer Science) поопровергать... (запасаюсь попкорном, чипсами и пивом)
Я буду долго смеяться над твоим детским простодушием, причем тут Фаулер? Никак нагуглил в своей википедии буковки известного чревовещателя и закатил нос кверху? Смешно, ей богу. Покажи мне место, в котором Мартин говорит об ORM плохо. Закупил пепсиколы с бубликами, готов читать твой унылый визг души.

sphinx_mvСоотвественно, правильный (во всех смыслах) перевод этого абзаца звучит именно так:
Мы должны смириться с мыслью о том, что ORM являются плохими, уродливыми и перегруженными.
Соотвественно, правильный (во всех смыслах) перевод этого абзаца звучит именно так: Мы должны отказаться от мысли, что ORM плохо, уродливо или мертво. Для решения проблем имеется много различных вариантов для этого. Но прежде чем мы рассмотрим эти варианты, давайте посмотрим на эту проблему с конкретики. ...

sphinx_mvОжидаемо...
Говоришь блондинке "дура", а от нее в ответ "зато красивая" - но, хоть бы раз перед этим она в зеркало глянула...
Ничего удивительного - блондинка скопипастила изкаверканные слова чревовещателей правды матки и гнёт тупую ламерскую линию. Обычный быдлоподход неудачника.

sphinx_mvФаулер сказал... Богард сказал... Ньюард сказал... А МСУ все еще пыркается из говна конфеты делать...
С другой строны, чего еще от "золотаря информационных технологий" ожидать?!
Что Фаулер сказал? Что Богард сказал? Я катаюсь пополу от твоего тугодумия. Почитай лучше Application Architecture Guide, над которым трудились десятки умов и свопили все знания в этот букварь, а не кривые переводы сюда пость.
...
Рейтинг: 0 / 0
Организация запросов из десктопного клиента к субд
    #38063504
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
17-77с тобой не о чем разговаривать, ты даже не можешь проследить две линии обсуждения, и почитать еще раз чуть выше над словом "аналогично"
Ты путаешься в показаниях, я тебя ловлю уже не в первый раз на этом. И тут ты выпаливаешь, что со мной не о чем разговаривать. Алес капут епта.

17-77в моем случае считывание структуры БД занимало продолжительно-раздражающее время
Ты мог написать, что в твоем случае считывание структуры БД занимало месяц. И что? Ты так же не привел доказательств об утечках памяти. Что из этого следует? Правльно, ты очередная codemonkey-врунишка.

17-77забывчивый ты наш, до этого уже разобрали случаи обновления и пересоздания
Да у тебя уже в кашу всё смешалось, кони, люди.

17-77а, вот оно что, тебе DB-разработчик попу подтирал, ясно теперь, ну вот спроси у него сколько времени заняла разработка структуры БД и включи это время в общее время для database-first подхода
Я без него сам тебе скажу о трудозатратах. Я их уже озвучивал и говорил о плюсах дизайнера + автоапдейт.

17-77тупой и еще тупее, читаем ниже до полного понимания
Опять ты заднюю включаешь. И дурака тоже.

17-77само название "database-first" предполагает, что сначала надо создать базу xDD
Не поверишь, code-first тоже без базы работать не будет.

17-77ого, окей, давай досвидания
Какой-то дешевый слив...
...
Рейтинг: 0 / 0
Организация запросов из десктопного клиента к субд
    #38063564
sphinx_mv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУsphinx_mvМатериал Вами (как обычно) не прочитан... А если и прочитан, то (тоже как обычно) совершенно не понят...
Ты не можешь не то, что понять этот материал, ты даже не можешь идею материала вменяемо донести. Одно хлюпанье.
С какого перепоя Вы решили, что я что-то должен Вам "вменяемо доносить"?!
Ссылки были даны! Вам прочитать и понять материал самостоятельно мозгов не хватает?
Ну, а я-то тут при чем?! Лектором или репетитором лично к Вам я не нанимался...
МСУsphinx_mvБыло бы это смешно - можно было бы и поржать, но, к ОЧЕНЬ большому сожалению, то что у Вас проблемы с чтением "языка оригинала" даже со словарем - давно задокументировано. И смех это уже давно совершенно не вызывает...
Ты можешь свой оригинал утопить в унитазе, я тебе перевожу дословно, что имел ввиду автор. Все остальные слюни про идеоматическую дурь поскипал. Иди учись с букварём в первый класс.
С Вашим-то знанием "дословного" перевода только программированием заниматься... Ага...
На "переводе со словарем" даже первокласник лучше Вас бы справился...
МСУsphinx_mvНу-ну... Поспорьте с Фаулером... Можно еще Теда Ньюарда (Ted Neward) с его "Вьетнамом компьютерных наук" (The Vietnam of Computer Science) поопровергать... (запасаюсь попкорном, чипсами и пивом)
Я буду долго смеяться над твоим детским простодушием, причем тут Фаулер? Никак нагуглил в своей википедии буковки известного чревовещателя и закатил нос кверху? Смешно, ей богу. Покажи мне место, в котором Мартин говорит об ORM плохо. Закупил пепсиколы с бубликами, готов читать твой унылый визг души.Ну, идите давитесь бубликами, топитесь в коле, стреляйтесь из веника или вешайтесь на шнуре от мышки:
ФаулерListening to some critics, you'd think that the best thing for a modern software developer to do is roll their own ORM. The implication is that tools like Hibernate and Active Record have just become bloatware, so you should come up with your own lightweight alternative. Now I've spent many an hour griping at bloatware, but ORMs really don't fit the bill - and I say this with bitter memory . For much of the 90's I saw project after project deal with the object/relational mapping problem by writing their own framework - it was always much tougher than people imagined. Usually you'd get enough early success to commit deeply to the framework and only after a while did you realize you were in a quagmire - this is where I sympathize greatly with Ted Neward's famous quote that object-relational mapping is the Vietnam of Computer Science[1].Продолжить? Не вопрос:
ФаулерMany people treat the relational database "like a crazy aunt who's shut up in an attic and whom nobody wants to talk about"[3]. In this world-view they just want to deal with in-memory data-structures and let the ORM deal with the database. This way of thinking can work for small applications and loads, but it soon falls apart once the going gets tough. Essentially the ORM can handle about 80-90% of the mapping problems , but that last chunk always needs careful work by somebody who really understands how a relational database works .Могу еще добавить:
ФаулерMapping to a relational database involves lots of repetitive, boiler-plate code. A framework that allows me to avoid 80% of that is worthwhile even if it is only 80%. The problem is in me for pretending it's 100% when it isn't. David Heinemeier Hansson, of Active Record fame, has always argued that if you are writing an application backed by a relational database you should damn well know how a relational database works .Специально для альтернативноодаренных выделено болдом и цветом...
Свой вариант перевода не привожу принципиально - кое-кому практика хотя бы со словарем не помешает.
МСУsphinx_mvСоотвественно, правильный (во всех смыслах) перевод этого абзаца звучит именно так:
Мы должны смириться с мыслью о том, что ORM являются плохими, уродливыми и перегруженными.
Соотвественно, правильный (во всех смыслах) перевод этого абзаца звучит именно так: Мы должны отказаться от мысли, что ORM плохо, уродливо или мертво. Для решения проблем имеется много различных вариантов для этого. Но прежде чем мы рассмотрим эти варианты, давайте посмотрим на эту проблему с конкретики. ...
Словарь и грамматику в зубы - и марш на чердак учиться, учиться и учиться...
МСУsphinx_mvОжидаемо...
Говоришь блондинке "дура", а от нее в ответ "зато красивая" - но, хоть бы раз перед этим она в зеркало глянула...
Ничего удивительного - блондинка скопипастила изкаверканные слова чревовещателей правды матки и гнёт тупую ламерскую линию. Обычный быдлоподход неудачника.Мы уже в курсе, что у не-ламеров обработка данных c использованием ORM выполняется в 10 раз медленнее - "ничего страшного, зато тренд" (c)
МСУsphinx_mvФаулер сказал... Богард сказал... Ньюард сказал... А МСУ все еще пыркается из говна конфеты делать...
С другой строны, чего еще от "золотаря информационных технологий" ожидать?!Что Фаулер сказал? Что Богард сказал? Я катаюсь пополу от твоего тугодумия.У Вас проблемы с восприятием информации, и при этом угодум - кто-то другой?
МСУПочитай лучше Application Architecture Guide, над которым трудились десятки умов и свопили все знания в этот букварь, а не кривые переводы сюда пость.Дешевый ламерский бред...
Для начала, Вам сюда ...
Если "заблудитесь" - раздел Hystory, список самых известных книг по тематике, п.4...
...
Рейтинг: 0 / 0
Организация запросов из десктопного клиента к субд
    #38063646
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
17-77Алексей КДля других задач.
хм, интересно и для каких?Строгая типизация данных. Генерация SQL.
17-77Алексей КНет, оптимизация.
все не так однозначно, ORM является абстракцией, и если в этой абстракции отсутствует проверка на ограничение длины запроса для некой БД - это будет именно костылем, чтобы исправить ситуацию, которой не должно было быть, по правильному - ORM должна сама определить по типу БД максимальную длину запроса и организовать операцию так, чтобы не превысить это значениеВы слишком многово хотите. Непонятно, причём тут проверка на максимальную длину батча, ну да ладно. :-)
17-77Алексей КДа я не про это. Странно, что приходится производить масштабные изменения данных, уже хранящихся в БД. Масштабная вставка - да, но не масштабные изменения. Впрочем, Вам виднее.
так не очень понятно как вы предлагаете решить задачу в глобальном смысле? т.е. тут даже говорится о том, что средствами СУБД, внутри самой базы масштабно обновлять данные - есть плохо?Вроде как БД не умеет проверять валидность ссылок. Так что "внутри БД" не получится.
17-77ну а если надо? конкретно задача проверки ссылок URL, ссылки хранятся в базе, ссылка сегодня работает, завтра нет, надо их регулярно проверять, вопрос об адекватности требований заказчика / пользователя оставим в сторонеНу надо так надо, проблем не вижу. Да, EF не умеет делать пакетные обновления. Надо или взять другой ORM, или написать SQL вручную. Иногда можно, не так часто это приходится делать.
...
Рейтинг: 0 / 0
Организация запросов из десктопного клиента к субд
    #38063648
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sphinx_mvАлексей Кпропущено...
В обоих статьях про LINQ ни слова. Почему?Потому, что LINQ непосредственного отношения к ORM не имеет.Да?! Expression Tree лежит в основе генерации SQL. Есть смысл сначала ознакомиться с теорией...
sphinx_mvЭто встроенный язык запросов к объектам, реализующим на .NET (и только!) интерфейсы IEnumerable и IEnumerable<T>Таки IQueryable<T> ? Мы ведь говорим о LINQ-to-SQL а не LINQ-to-Object, не так ли?
...
Рейтинг: 0 / 0
Организация запросов из десктопного клиента к субд
    #38063650
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sphinx_mvЭто встроенный язык запросов к объектам, реализующим на .NET (и только!) интерфейсы IEnumerable и IEnumerable<T> Вот немного по теме.
...
Рейтинг: 0 / 0
Организация запросов из десктопного клиента к субд
    #38063824
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей Кsphinx_mvпропущено...
Потому, что LINQ непосредственного отношения к ORM не имеет.Да?! Expression Tree лежит в основе генерации SQL. Есть смысл сначала ознакомиться с теорией...
sphinx_mvЭто встроенный язык запросов к объектам, реализующим на .NET (и только!) интерфейсы IEnumerable и IEnumerable<T>Таки IQueryable<T> ? Мы ведь говорим о LINQ-to-SQL а не LINQ-to-Object, не так ли?
Он не знает, что такое Expression Tree :) Он так же не понимает разницы L2S и объектного линка :)
Неуч, кули с него еще взять.
...
Рейтинг: 0 / 0
Организация запросов из десктопного клиента к субд
    #38063970
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУОн не знает, что такое Expression Tree :)"Меньше знаеш - крепче спиш" (с)
...
Рейтинг: 0 / 0
Организация запросов из десктопного клиента к субд
    #38063975
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КМСУОн не знает, что такое Expression Tree :)"Меньше знаеш - крепче спиш" (с)
Так не спит ведь codemonkey, что-то шумит, доказывает, чушь какую-то постит с левыми переводами. Неугомонная кодирующая обезьянка?
...
Рейтинг: 0 / 0
Организация запросов из десктопного клиента к субд
    #38064172
sphinx_mv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей Кsphinx_mvпропущено...
Потому, что LINQ непосредственного отношения к ORM не имеет.Да?! Expression Tree лежит в основе генерации SQL. Есть смысл сначала ознакомиться с теорией...
Может, не будете уподобляться местному "неадеквату"?
"Звезды говорят" (с), что LINQ никакого непосредственного отношения к генерации SQL не имеет. Это - встроенное в платформу расширение для запросов к "in-memory" данным. Как эти данные попали "in memory" - совершенно отдельный вопрос.
Алексей Кsphinx_mvЭто встроенный язык запросов к объектам, реализующим на .NET (и только!) интерфейсы IEnumerable и IEnumerable<T>Таки IQueryable<T> ? Мы ведь говорим о LINQ-to-SQL а не LINQ-to-Object, не так ли?
Это ВЫСЕЙЧАС ) говорите про LINQ-to-SQL, с местом которого в общей инфраструктуре LINQ можно ознакомиться здесь
А вот для LINQ (и не только "-to-Object" ) таки "необходимо и достаточно" реализованных интерфейсов IEnumerable или IEnumerable<T>. И получить соотвествующие коллекции можно ЛЮБЫМ способом - в том числе не только БЕЗ использования ORM, но даже вообще без SQL-источников данных...
"Хотите получить точный ответ - задавайте точный вопрос" (с)
...
Рейтинг: 0 / 0
Организация запросов из десктопного клиента к субд
    #38064184
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sphinx_mvАлексей Кпропущено...
Да?! Expression Tree лежит в основе генерации SQL. Есть смысл сначала ознакомиться с теорией...
Может, не будете уподобляться местному "неадеквату"?
"Звезды говорят" (с), что LINQ никакого непосредственного отношения к генерации SQL не имеет. Это - встроенное в платформу расширение для запросов к "in-memory" данным. Как эти данные попали "in memory" - совершенно отдельный вопрос.
Твоя дурь в безумной башке просто радует. Надень очки и читай, наконец:

LINQ to ObjectsIncludes links to topics that explain how to use LINQ to Objects to access in-memory data structures

LINQ to ADO.NETProvides an entry point for documentation about LINQ to DataSet, LINQ to SQL, and LINQ to Entities. LINQ to DataSet enables you to build richer query capabilities into DataSet by using the same query functionality that is available for other data sources. LINQ to SQL provides a run-time infrastructure for managing relational data as objects. LINQ to Entities enables developers to write queries against the Entity Framework conceptual model by using Visual Basic or Visual C#.

Зубрить до посинения, codemonkey: http://msdn.microsoft.com/ru-ru/library/bb386976.aspx

LINQ to SQLРеляционные данные отображаются в виде коллекции двумерных таблиц (отношений или плоских файлов),где общие столбцы связывают таблицы друг с другом.Для эффективного использования LINQ to SQL необходимо ознакомиться с основными принципами реляционных баз данных.

В LINQ to SQL модель данных реляционной базы данных сопоставляется объектной модели, выраженной в языке программирования разработчика.При запуске приложения LINQ to SQL преобразует запросы LINQ из объектной модели в SQL и отправляет их в базу данных для выполнения. Когда база данных возвращает результаты, LINQ to SQL преобразует их обратно в объекты, с которыми можно работать на собственном языке программирования.

LINQ to SQLПользователи среды Visual Studio, как правило, пользуются конструктором Реляционный конструктор объектов, который предоставляет пользовательский интерфейс для реализации многих функций LINQ to SQL.
Документация, включенная в эту версию LINQ to SQL, описывает основные строительные блоки, процессы и методики, необходимые для построения приложений LINQ to SQL.Можно также поискать в библиотеке MSDN конкретные вопросы и принять участие в форуме LINQ Forum, где можно подробно обсудить со специалистами более сложные вопросы.Наконец, в техническом документе LINQ to SQL: запросы LINQ .NET для реляционных данных (на английском языке) подробно описывается технология LINQ to SQL и приводятся примеры кода на языках Visual Basic и C#

http://msdn.microsoft.com/ru-ru/library/bb399398(VS.90).aspx

Приступая к работе (LINQ to SQL)С помощью LINQ to SQL можно использовать технологию LINQ для доступа к базам данных SQL тем же образом, что и к коллекции в памяти.
...
Рейтинг: 0 / 0
Организация запросов из десктопного клиента к субд
    #38064203
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей К
Лёня, мне нарвится этот чудик - ляпнул глупость, потом погуглил еще разок про LINQ, а теперь убого выкручивается из нелепой ситуации
...
Рейтинг: 0 / 0
Организация запросов из десктопного клиента к субд
    #38064207
beg-in-er
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУэто универсальные механизмы
прям вундервафля какая-то.
универсальные механизмы это конечно здорово, но совершенне универсальных механизмов. к тому же за универсальность надо платить высокую цену. С лёгкого слова Теда Ньюарда про "Вьетнам" : "легко войти и трудно выйти".

особенно доставил Left Join 11179149
представил себе как это будет выглядеть с 5 left. а store procudure. а ну да, костылёк.

и вообще похожая тема есть там же "ORM vs sql"
...
Рейтинг: 0 / 0
Организация запросов из десктопного клиента к субд
    #38064214
beg-in-er
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
пропало словоbeg-in-erуниверсальные механизмы это конечно здорово, но жизнь совершенне универсальных механизмов.
...
Рейтинг: 0 / 0
Организация запросов из десктопного клиента к субд
    #38064227
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sphinx_mvАлексей Кпропущено...
Да?! Expression Tree лежит в основе генерации SQL. Есть смысл сначала ознакомиться с теорией...
Может, не будете уподобляться местному "неадеквату"?
"Звезды говорят" (с), что LINQ никакого непосредственного отношения к генерации SQL не имеет. Это - встроенное в платформу расширение для запросов к "in-memory" данным. Как эти данные попали "in memory" - совершенно отдельный вопрос.
Алексей Кпропущено...
Таки IQueryable<T> ? Мы ведь говорим о LINQ-to-SQL а не LINQ-to-Object, не так ли?
Это ВЫСЕЙЧАС ) говорите про LINQ-to-SQL, с местом которого в общей инфраструктуре LINQ можно ознакомиться здесь
А вот для LINQ (и не только "-to-Object" ) таки "необходимо и достаточно" реализованных интерфейсов IEnumerable или IEnumerable<T>. И получить соотвествующие коллекции можно ЛЮБЫМ способом - в том числе не только БЕЗ использования ORM, но даже вообще без SQL-источников данных...
"Хотите получить точный ответ - задавайте точный вопрос" (с)МСУ уже ответил. Больше добавить нечего.
...
Рейтинг: 0 / 0
Организация запросов из десктопного клиента к субд
    #38064231
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУАлексей К
Лёня, мне нарвится этот чудик - ляпнул глупость, потом погуглил еще разок про LINQ, а теперь убого выкручивается из нелепой ситуации Видимо коллега мало работал с дотнетом. Ему простительно. :-)
...
Рейтинг: 0 / 0
Организация запросов из десктопного клиента к субд
    #38064239
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
beg-in-erпропало словоbeg-in-erуниверсальные механизмы это конечно здорово, но жизнь совершенне универсальных механизмов."Жизнь" на 90% состоит из рутины, которая автоматизируется с помощью ORM в том числе.
...
Рейтинг: 0 / 0
Организация запросов из десктопного клиента к субд
    #38064241
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
beg-in-erуниверсальные механизмы это конечно здорово, но жизнь совершенне универсальных механизмов.
И что дальше?

beg-in-erособенно доставил Left Join 11179149
представил себе как это будет выглядеть с 5 left. а store procudure. а ну да, костылёк.
Это не просто LEFT JOIN, это LEFT JOIN с замороченной сцепкой:

Код: sql
1.
(t1.Col1 = t2.Col1 Or t2.Col1 Is NULL) And (t1.Col2 = t2.Col2 Or t2.Col2 Is NULL)



Во-вторых, выглядеть с 5 объединениями на LINQ он будет вполне нормально. Тебя пугает синтаксис от его непонимания.
...
Рейтинг: 0 / 0
Организация запросов из десктопного клиента к субд
    #38064247
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
beg-in-erособенно доставил Left Join 11179149
представил себе как это будет выглядеть с 5 left. а store procudure. а ну да, костылёк.Чтобы вручную не писать join-ы в EF (и не только) придуманы ассоциации.
...
Рейтинг: 0 / 0
Организация запросов из десктопного клиента к субд
    #38064316
beg-in-er
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей К"Жизнь" на 90% состоит из рутины, которая автоматизируется с помощью ORM в том числе.
и получается разношёрстное решение.хотя это дело выбора.
а проблемы возникают тогда, когда надо что то сделать , из оставшихся 10%.
когда новые задачи идут в разрез с уже сделанным чистым ОРМ решением.

побольшому счёту , ОРМ это в первую очередь бизнес-решение. для экономии на SQLщиках. там где не надо много , там мож и прокатит.
...
Рейтинг: 0 / 0
Организация запросов из десктопного клиента к субд
    #38064403
Gluck_13
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КnetivanМСУ,
разница в том делать тыщу раз (ID=x and ID=x2) OR и так 1000 раз и 10 секунд или делаешь JOIN и получаешь 1 секунду.

1000 простых запросов вида select * from T where X=@x and Y=@y выполняться будут тоже порядка секунды. А то и быстрее, если сетевой пинг позволит + запустить их одновременно асинхронно.

зы: Почему данных, с которыми нужно джойнить, нет в базе? Может с архитектурой что-то не так?

Часто по производительности бывает выгоднее выполнить сложный запрос в несколько приемов, поджоинив результат предыдущего запроса с данными таблиц БД (или с результатами других запросов). В ХП обычно это реализуется путем сохранения промежуточных данных в табличных переменных или во временных таблицах. Проблема невозможности замэпить сущность EF на временную таблицу решается созданием в БД синонима для временной таблицы
Код: sql
1.
CREATE SYNONYM [Objects].[TempObjectTable] FOR [#tmp_TempObjectTable]


и мэппингом сущности на синоним.
Результат предыдущего запроса (или любые другие данные в виде коллекции объектов) заливается во временную таблицу через SqlBulkCopy, после чего эти данные можно далее использовать в запросах Linq2Entity. Таким же образом можно использовать для дальнейшего анализа в запросах LINQ данные, полученные в результате исполнения ХП или ExecuteStoreQuery().

В моих разработках я предпочитаю использовать временную таблицу универсальной структуры (несколько Guid-ов, несколько Int-ов и т.д.). Кроме того, в этой таблице есть Id раздела, позволяющий хранить несколько наборов данных. API, развернутое вокруг этой таблицы позволяет описать ее разделы в виде типизированных сущностей, создавать эту таблицу (при этом реально создаются не все возможные, а только описанные в разделах поля + поле Id раздела), заполнять разделы этой таблицы из типизированных коллекций, формировать запросы к разделам в виде IQueryable<TPartitionEntity>, где TPartitionEntity - тип сущности, связанный с разделом.

Этот подход позволяет в ряде случаев во много раз ускорить сложные расчеты, аналогично разбиению сложных T-SQL на несколько более простых в ХП, но при этом реализовывать бизнес-логику через типизированные запросы LINQ.
...
Рейтинг: 0 / 0
Организация запросов из десктопного клиента к субд
    #38064472
sphinx_mv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей Кsphinx_mvпропущено...
Может, не будете уподобляться местному "неадеквату"?
"Звезды говорят" (с), что LINQ никакого непосредственного отношения к генерации SQL не имеет. Это - встроенное в платформу расширение для запросов к "in-memory" данным. Как эти данные попали "in memory" - совершенно отдельный вопрос.
пропущено...

Это ВЫСЕЙЧАС ) говорите про LINQ-to-SQL, с местом которого в общей инфраструктуре LINQ можно ознакомиться здесь
А вот для LINQ (и не только "-to-Object" ) таки "необходимо и достаточно" реализованных интерфейсов IEnumerable или IEnumerable<T>. И получить соотвествующие коллекции можно ЛЮБЫМ способом - в том числе не только БЕЗ использования ORM, но даже вообще без SQL-источников данных...
"Хотите получить точный ответ - задавайте точный вопрос" (с)МСУ уже ответил. Больше добавить нечего.
ТАК И У ВАС LINQ и LINQ-to-SQL - одно и то же?! Афигеть! Дайте две! А еще луше - три...

PS. В-общем, ишшо один "гуру" в "Hall of Fame" ламеризма затесался... Итого, два сапога - пара: МСУ и Алексей К
Первый документацию читать не научился - даже до уровня знакомых "букаф"...
Второй пишет одно, подразумевает второе, думает про третье - и тоже документацию не читает с теми же претензиями на всезнание...
...
Рейтинг: 0 / 0
Организация запросов из десктопного клиента к субд
    #38064500
Lexxxxx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sphinx_mvТАК И У ВАС LINQ и LINQ-to-SQL - одно и то же?! Афигеть! Дайте две! А еще луше - три...

Судя по: "Language-Integrated Query (LINQ) is a set of features introduced in Visual Studio 2008 that extends powerful query capabilities to the language syntax of C# and Visual Basic. LINQ introduces standard, easily-learned patterns for querying and updating data, and the technology can be extended to support potentially any kind of data store. Visual Studio includes LINQ provider assemblies that enable the use of LINQ with .NET Framework collections, SQL Server databases, ADO.NET Datasets, and XML documents."
разве LINQ-to-SQL не является одной из разновидностей LINQ и реализуется при помощи соответствующего провайдера?
...
Рейтинг: 0 / 0
Организация запросов из десктопного клиента к субд
    #38064559
beg-in-er
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Lexxxxxразве LINQ-to-SQL не является одной из разновидностей LINQ и реализуется при помощи соответствующего провайдера?
спичь о том , что LINQ к SQL не имеет отношения. а точнее не зависит от SQL 13574572 .
LINQ это самостоятельный механизм генерации. и в зависимости от контекста , он генерит то SQL-код, то другую управляющюю последовательность.
ведь к простому массиву SQL-запрос нах не нужен. Where просто превратится в управляющую последовательность "языка" C#.
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
 int[] QQ = new int[100];
            int[] QQ = new int[100];
            var VQ1 = QQ.Where(x => x == 7).ToArray();
                        // Брюки превращаются в элегантные шорты
                        List<int> Sresult = new List<int>();
                        for (int q=0;q<QQ.Length;q++)
                            if (q == 7) { Sresult.Add(QQ[q]); }
            var VQ2 = Sresult.ToArray();


если кто то хочет генерить SQL код для поиска в памяти - ну флаг ему в руки.
...
Рейтинг: 0 / 0
Организация запросов из десктопного клиента к субд
    #38064562
sphinx_mv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Lexxxxxsphinx_mvТАК И У ВАС LINQ и LINQ-to-SQL - одно и то же?! Афигеть! Дайте две! А еще луше - три...

Судя по: "Language-Integrated Query (LINQ) is a set of features introduced in Visual Studio 2008 that extends powerful query capabilities to the language syntax of C# and Visual Basic. LINQ introduces standard, easily-learned patterns for querying and updating data, and the technology can be extended to support potentially any kind of data store. Visual Studio includes LINQ provider assemblies that enable the use of LINQ with .NET Framework collections, SQL Server databases, ADO.NET Datasets, and XML documents."
разве LINQ-to-SQL не является одной из разновидностей LINQ и реализуется при помощи соответствующего провайдера?Все правильно! Только наличие "одинакового интерфейса" совершенно не означает что имеем дело с одним и тем же...

Когда Вы пишете (дословно!) "LINQ" (что по всем раскладкам тождественно нечто "общее", "any kind of data store", etc.), при этом подразумевая "LINQ-to-SQL" (как ни выкручивайся ужом на сковородке, но это "частное решение" непосредственно для SQL), претензии на "непонимание" совершенно не уместны: хрустальный шар и телепатия - весьма необщедоступные "фичи", а если кому они и доступны, применять их не обязаны...
...
Рейтинг: 0 / 0
Организация запросов из десктопного клиента к субд
    #38064568
Lexxxxx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
beg-in-erесли кто то хочет генерить SQL код для поиска в памяти - ну флаг ему в руки.
Интересно, что нагенерит вот это:
Код: c#
1.
var VQ1 = QQ.AsQueryable().Where(x => x == 7).ToArray();
...
Рейтинг: 0 / 0
Организация запросов из десктопного клиента к субд
    #38064609
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sphinx_mvКогда Вы пишете (дословно!) "LINQ" (что по всем раскладкам тождественно нечто "общее", "any kind of data store", etc.), при этом подразумевая "LINQ-to-SQL" (как ни выкручивайся ужом на сковородке, но это "частное решение" непосредственно для SQL), претензии на "непонимание" совершенно не уместны: хрустальный шар и телепатия - весьма необщедоступные "фичи", а если кому они и доступны, применять их не обязаны...
Ржунимагу, выкручивается как угорь в кастрюле

Твои слова: "Потому, что LINQ непосредственного отношения к ORM не имеет." (c)

Ну-как расскажи, про какой LINQ ты "имел ввиду"?
...
Рейтинг: 0 / 0
Организация запросов из десктопного клиента к субд
    #38064631
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sphinx_mvПотому, что LINQ непосредственного отношения к ORM не имеет.
Так мог сказать только ламер, не понимающий как работаю ORM и что такое LINQ.

Entity Framework
ADO.NET will LINQ-enable many data access components: LINQ to SQL, LINQ to DataSet and LINQ to Entities
LINQ - это язык доступа к данным. Как это LINQ непосредственного отношения к ORM не имеет? Ты сдурел?

А про linq to nhibernate что скажешь? Тоже не имеет?
...
Рейтинг: 0 / 0
Организация запросов из десктопного клиента к субд
    #38065210
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
тук тук
...
Рейтинг: 0 / 0
Организация запросов из десктопного клиента к субд
    #38065489
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУsphinx_mvпропущено...

ТАК И У ВАС LINQ и LINQ-to-SQL - одно и то же?! Афигеть! Дайте две! А еще луше - три...
Linq to SQL - это LINQ точно так же, как и Linq to Objects это тоже LINQ. Еще раз, твои слова:

sphinx_mvПотому, что LINQ непосредственного отношения к ORM не имеет.
Это встроенный язык запросов к объектам, реализующим на .NET (и только!) интерфейсы IEnumerable и IEnumerable<T>

Ты так же не говорил, о каком LINQ речь, о Objects или SQL. Следовательно, ты тупо даже не знал о существовании разновидностей LINQ. Правда потом, когда погуглил, ты понял, что обосрался и начал заниматься болтологией с игрой слов, мол что ты имел ввиду это, а не то.

Бугага Людей, знающих про LINQ, на планете стало на один больше.
...
Рейтинг: 0 / 0
Организация запросов из десктопного клиента к субд
    #38065948
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
beg-in-erАлексей К"Жизнь" на 90% состоит из рутины, которая автоматизируется с помощью ORM в том числе.
и получается разношёрстное решение.хотя это дело выбора.
а проблемы возникают тогда, когда надо что то сделать , из оставшихся 10%.
когда новые задачи идут в разрез с уже сделанным чистым ОРМ решением.Бытует мнение, что идеального решения не существует. Чисто SQL-решение, что не удивительно, тоже имеет свои недостатки. ORM + сервер приложений призваны их устранить.
beg-in-erпобольшому счёту , ОРМ это в первую очередь бизнес-решение. для экономии на SQLщиках. там где не надо много , там мож и прокатит.Программист, пишущий обращения к БД через ORM, должен знать SQL как "отче наш". ORM - это автоматизация написания SQL-запросов, не более того.
...
Рейтинг: 0 / 0
Организация запросов из десктопного клиента к субд
    #38066907
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
МСУLINQ - это язык доступа к данным. Как это LINQ непосредственного отношения к ORM не имеет?

Ну, я могу использовать LINQ to SQL, без ORM.
Полагаю, что есть разработки ORM без LINQ.

Согласись, что LINQ to Entities не умеет вызывать хранимые процедуры
...
Рейтинг: 0 / 0
Организация запросов из десктопного клиента к субд
    #38066914
netivan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cat2,

авторСогласись, что LINQ to Entities не умеет вызывать хранимые процедуры да с утра вызывал вроде
...
Рейтинг: 0 / 0
Организация запросов из десктопного клиента к субд
    #38066924
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Алексей КБытует мнение, что идеального решения не существует. Чисто SQL-решение, что не удивительно, тоже имеет свои недостатки. ORM + сервер приложений призваны их устранить.
...
Программист, пишущий обращения к БД через ORM, должен знать SQL как "отче наш". ORM - это автоматизация написания SQL-запросов, не более того.

Так его и не существует, как априори не существует ничего идеального.
...
Я полагаю, что это не автоматизация, а попытка снять-понизить барьер для вхождения в БД для начинающих программистов.

Программистам "небаз" дико видеть в коде текстовые строки, которые должны выполнятся где-то там.
Программисты баз к этому давно привыкли.
Я полагаю, что ORM полновестно сможет работать тогда, когда базы будут изначально заточены на его использование. Пока это не так.
...
Рейтинг: 0 / 0
Организация запросов из десктопного клиента к субд
    #38066925
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
netivanCat2,

авторСогласись, что LINQ to Entities не умеет вызывать хранимые процедуры да с утра вызывал вроде

В LINQ to Entities ?
...
Рейтинг: 0 / 0
Организация запросов из десктопного клиента к субд
    #38066999
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cat2МСУLINQ - это язык доступа к данным. Как это LINQ непосредственного отношения к ORM не имеет?

Ну, я могу использовать LINQ to SQL, без ORM.
Полагаю, что есть разработки ORM без LINQ.

Согласись, что LINQ to Entities не умеет вызывать хранимые процедуры
1. Linq 2 SQL, вообще-то, и есть ORM :) Как можно использовать ORM без ORM, расскажи?
2. Почему EF не умеет вызывать хранимые процедуры?
...
Рейтинг: 0 / 0
Организация запросов из десктопного клиента к субд
    #38067048
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cat2Программистам "небаз" дико видеть в коде текстовые строки, которые должны выполнятся где-то там.
Программисты баз к этому давно привыкли.
Я полагаю, что ORM полновестно сможет работать тогда, когда базы будут изначально заточены на его использование. Пока это не так.
Кобол - наше всио
...
Рейтинг: 0 / 0
Организация запросов из десктопного клиента к субд
    #38067058
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cat2Я полагаю, что это не автоматизация, а попытка снять-понизить барьер для вхождения в БД для начинающих программистов.
Это не самоцель, а лишь одно из преимуществ ORM.

Cat2Я полагаю, что ORM полновестно сможет работать тогда, когда базы будут изначально заточены на его использование. Пока это не так.
Базы ничего не знают и не должны знать об ORM. В свою очередь, ORM должны знать всё о базах. Единая точка входа ПО для работы с базой - ORM.
...
Рейтинг: 0 / 0
Организация запросов из десктопного клиента к субд
    #38067073
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУБазы ничего не знают и не должны знать об ORM
это не есть хорошо.

ORM - в нынешнем виде костыль. Если ORM так хорош - где СУБД, где ORM API является нативным?
...
Рейтинг: 0 / 0
Организация запросов из десктопного клиента к субд
    #38067079
sphinx_mv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей Кbeg-in-erпропущено...

и получается разношёрстное решение.хотя это дело выбора.
а проблемы возникают тогда, когда надо что то сделать , из оставшихся 10%.
когда новые задачи идут в разрез с уже сделанным чистым ОРМ решением.Бытует мнение, что идеального решения не существует. Чисто SQL-решение, что не удивительно, тоже имеет свои недостатки. ORM + сервер приложений призваны их устранить.
Забудем на время, что применение ORM в обоих случаях совершенно перпендикулярно...
И вспомним, что даже "чистое SQL-решение" (которое может быть очень даже не "чистым") справляется с любой нагрузкой, от которой давно сдохнет самый правильный сервер приложений. Т.е., сервер приложений - лишний. Совсем.
Алексей Кbeg-in-erпобольшому счёту , ОРМ это в первую очередь бизнес-решение. для экономии на SQLщиках. там где не надо много , там мож и прокатит.Программист, пишущий обращения к БД через ORM, должен знать SQL как "отче наш".Да-да... Это бы вложить в мозги "крутых ORMщиков", которые не только не знают (и не особо хотят знать SQL), но и даже не имеют вменяемого представления о базовых механизмах работы с данными и их местом во фреймворке...
Алексей КORM - это автоматизация написания SQL-запросов, не более того.Угу... Типа, если доступ к реляционным данным идет не через SQL, то это уже и работать не будет... ISAM, тот же текст с разделителями, etc...
ORM представляет собой методику отображения реляционной модели данных на объектную модель приложения (и обратно) - что к автоматизации написания запросов совершенно не стояло, не стоит и (в обозримом будущем) не будет стоять ни каким боком. Только вместо запросов и манипуляций с данными в БД пишутся запросы и манипуляции с объектами в программе - другая точка приложения усилий. Обеспечение функционала обмена данными между программными объектами и базой данных при этом никто не отменял - соответственно, общий объем и сложность приложения только увеличивается от этого.
...
Рейтинг: 0 / 0
Организация запросов из десктопного клиента к субд
    #38067086
sphinx_mv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИзопропилМСУБазы ничего не знают и не должны знать об ORM
это не есть хорошо.

ORM - в нынешнем виде костыль. Если ORM так хорош - где СУБД, где ORM API является нативным?Вообще-то, есть такие...
Если исключить из рассмотрения NoSQL-варианты (OODB и прочие), оставив только имеющие отношение к "реляционным" - как минимум, Informix, DB2, Oracle... Запросы к этим СУБД могут давать "на выходе" данные объектного вида, тривиальным образом ("один-в-один") отображающиеся в классы в языках программирования.
...
Рейтинг: 0 / 0
Организация запросов из десктопного клиента к субд
    #38067146
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sphinx_mv,

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


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