|
Организация запросов из десктопного клиента к субд
|
|||
---|---|---|---|
#18+
Алексей К"Жизнь" на 90% состоит из рутины, которая автоматизируется с помощью ORM в том числе. и получается разношёрстное решение.хотя это дело выбора. а проблемы возникают тогда, когда надо что то сделать , из оставшихся 10%. когда новые задачи идут в разрез с уже сделанным чистым ОРМ решением. побольшому счёту , ОРМ это в первую очередь бизнес-решение. для экономии на SQLщиках. там где не надо много , там мож и прокатит. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.12.2012, 14:07 |
|
Организация запросов из десктопного клиента к субд
|
|||
---|---|---|---|
#18+
Алексей КnetivanМСУ, разница в том делать тыщу раз (ID=x and ID=x2) OR и так 1000 раз и 10 секунд или делаешь JOIN и получаешь 1 секунду. 1000 простых запросов вида select * from T where X=@x and Y=@y выполняться будут тоже порядка секунды. А то и быстрее, если сетевой пинг позволит + запустить их одновременно асинхронно. зы: Почему данных, с которыми нужно джойнить, нет в базе? Может с архитектурой что-то не так? Часто по производительности бывает выгоднее выполнить сложный запрос в несколько приемов, поджоинив результат предыдущего запроса с данными таблиц БД (или с результатами других запросов). В ХП обычно это реализуется путем сохранения промежуточных данных в табличных переменных или во временных таблицах. Проблема невозможности замэпить сущность EF на временную таблицу решается созданием в БД синонима для временной таблицы Код: sql 1.
и мэппингом сущности на синоним. Результат предыдущего запроса (или любые другие данные в виде коллекции объектов) заливается во временную таблицу через SqlBulkCopy, после чего эти данные можно далее использовать в запросах Linq2Entity. Таким же образом можно использовать для дальнейшего анализа в запросах LINQ данные, полученные в результате исполнения ХП или ExecuteStoreQuery(). В моих разработках я предпочитаю использовать временную таблицу универсальной структуры (несколько Guid-ов, несколько Int-ов и т.д.). Кроме того, в этой таблице есть Id раздела, позволяющий хранить несколько наборов данных. API, развернутое вокруг этой таблицы позволяет описать ее разделы в виде типизированных сущностей, создавать эту таблицу (при этом реально создаются не все возможные, а только описанные в разделах поля + поле Id раздела), заполнять разделы этой таблицы из типизированных коллекций, формировать запросы к разделам в виде IQueryable<TPartitionEntity>, где TPartitionEntity - тип сущности, связанный с разделом. Этот подход позволяет в ряде случаев во много раз ускорить сложные расчеты, аналогично разбиению сложных T-SQL на несколько более простых в ХП, но при этом реализовывать бизнес-логику через типизированные запросы LINQ. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.12.2012, 14:53 |
|
Организация запросов из десктопного клиента к субд
|
|||
---|---|---|---|
#18+
Алексей К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" ламеризма затесался... Итого, два сапога - пара: МСУ и Алексей К Первый документацию читать не научился - даже до уровня знакомых "букаф"... Второй пишет одно, подразумевает второе, думает про третье - и тоже документацию не читает с теми же претензиями на всезнание... ... |
|||
:
Нравится:
Не нравится:
|
|||
04.12.2012, 15:22 |
|
Организация запросов из десктопного клиента к субд
|
|||
---|---|---|---|
#18+
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 и реализуется при помощи соответствующего провайдера? ... |
|||
:
Нравится:
Не нравится:
|
|||
04.12.2012, 15:36 |
|
Организация запросов из десктопного клиента к субд
|
|||
---|---|---|---|
#18+
Lexxxxxразве LINQ-to-SQL не является одной из разновидностей LINQ и реализуется при помощи соответствующего провайдера? спичь о том , что LINQ к SQL не имеет отношения. а точнее не зависит от SQL 13574572 . LINQ это самостоятельный механизм генерации. и в зависимости от контекста , он генерит то SQL-код, то другую управляющюю последовательность. ведь к простому массиву SQL-запрос нах не нужен. Where просто превратится в управляющую последовательность "языка" C#. Код: c# 1. 2. 3. 4. 5. 6. 7. 8.
если кто то хочет генерить SQL код для поиска в памяти - ну флаг ему в руки. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.12.2012, 16:04 |
|
Организация запросов из десктопного клиента к субд
|
|||
---|---|---|---|
#18+
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), претензии на "непонимание" совершенно не уместны: хрустальный шар и телепатия - весьма необщедоступные "фичи", а если кому они и доступны, применять их не обязаны... ... |
|||
:
Нравится:
Не нравится:
|
|||
04.12.2012, 16:05 |
|
Организация запросов из десктопного клиента к субд
|
|||
---|---|---|---|
#18+
beg-in-erесли кто то хочет генерить SQL код для поиска в памяти - ну флаг ему в руки. Интересно, что нагенерит вот это: Код: c# 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
04.12.2012, 16:10 |
|
Организация запросов из десктопного клиента к субд
|
|||
---|---|---|---|
#18+
sphinx_mvКогда Вы пишете (дословно!) "LINQ" (что по всем раскладкам тождественно нечто "общее", "any kind of data store", etc.), при этом подразумевая "LINQ-to-SQL" (как ни выкручивайся ужом на сковородке, но это "частное решение" непосредственно для SQL), претензии на "непонимание" совершенно не уместны: хрустальный шар и телепатия - весьма необщедоступные "фичи", а если кому они и доступны, применять их не обязаны... Ржунимагу, выкручивается как угорь в кастрюле Твои слова: "Потому, что LINQ непосредственного отношения к ORM не имеет." (c) Ну-как расскажи, про какой LINQ ты "имел ввиду"? ... |
|||
:
Нравится:
Не нравится:
|
|||
04.12.2012, 16:31 |
|
Организация запросов из десктопного клиента к субд
|
|||
---|---|---|---|
#18+
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 что скажешь? Тоже не имеет? ... |
|||
:
Нравится:
Не нравится:
|
|||
04.12.2012, 16:38 |
|
Организация запросов из десктопного клиента к субд
|
|||
---|---|---|---|
#18+
тук тук ... |
|||
:
Нравится:
Не нравится:
|
|||
04.12.2012, 22:28 |
|
Организация запросов из десктопного клиента к субд
|
|||
---|---|---|---|
#18+
МСУ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, на планете стало на один больше. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.12.2012, 06:37 |
|
Организация запросов из десктопного клиента к субд
|
|||
---|---|---|---|
#18+
beg-in-erАлексей К"Жизнь" на 90% состоит из рутины, которая автоматизируется с помощью ORM в том числе. и получается разношёрстное решение.хотя это дело выбора. а проблемы возникают тогда, когда надо что то сделать , из оставшихся 10%. когда новые задачи идут в разрез с уже сделанным чистым ОРМ решением.Бытует мнение, что идеального решения не существует. Чисто SQL-решение, что не удивительно, тоже имеет свои недостатки. ORM + сервер приложений призваны их устранить. beg-in-erпобольшому счёту , ОРМ это в первую очередь бизнес-решение. для экономии на SQLщиках. там где не надо много , там мож и прокатит.Программист, пишущий обращения к БД через ORM, должен знать SQL как "отче наш". ORM - это автоматизация написания SQL-запросов, не более того. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.12.2012, 12:28 |
|
Организация запросов из десктопного клиента к субд
|
|||
---|---|---|---|
#18+
МСУLINQ - это язык доступа к данным. Как это LINQ непосредственного отношения к ORM не имеет? Ну, я могу использовать LINQ to SQL, без ORM. Полагаю, что есть разработки ORM без LINQ. Согласись, что LINQ to Entities не умеет вызывать хранимые процедуры ... |
|||
:
Нравится:
Не нравится:
|
|||
05.12.2012, 19:45 |
|
Организация запросов из десктопного клиента к субд
|
|||
---|---|---|---|
#18+
Cat2, авторСогласись, что LINQ to Entities не умеет вызывать хранимые процедуры да с утра вызывал вроде ... |
|||
:
Нравится:
Не нравится:
|
|||
05.12.2012, 19:48 |
|
Организация запросов из десктопного клиента к субд
|
|||
---|---|---|---|
#18+
Алексей КБытует мнение, что идеального решения не существует. Чисто SQL-решение, что не удивительно, тоже имеет свои недостатки. ORM + сервер приложений призваны их устранить. ... Программист, пишущий обращения к БД через ORM, должен знать SQL как "отче наш". ORM - это автоматизация написания SQL-запросов, не более того. Так его и не существует, как априори не существует ничего идеального. ... Я полагаю, что это не автоматизация, а попытка снять-понизить барьер для вхождения в БД для начинающих программистов. Программистам "небаз" дико видеть в коде текстовые строки, которые должны выполнятся где-то там. Программисты баз к этому давно привыкли. Я полагаю, что ORM полновестно сможет работать тогда, когда базы будут изначально заточены на его использование. Пока это не так. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.12.2012, 19:57 |
|
Организация запросов из десктопного клиента к субд
|
|||
---|---|---|---|
#18+
netivanCat2, авторСогласись, что LINQ to Entities не умеет вызывать хранимые процедуры да с утра вызывал вроде В LINQ to Entities ? ... |
|||
:
Нравится:
Не нравится:
|
|||
05.12.2012, 19:57 |
|
Организация запросов из десктопного клиента к субд
|
|||
---|---|---|---|
#18+
Cat2МСУLINQ - это язык доступа к данным. Как это LINQ непосредственного отношения к ORM не имеет? Ну, я могу использовать LINQ to SQL, без ORM. Полагаю, что есть разработки ORM без LINQ. Согласись, что LINQ to Entities не умеет вызывать хранимые процедуры 1. Linq 2 SQL, вообще-то, и есть ORM :) Как можно использовать ORM без ORM, расскажи? 2. Почему EF не умеет вызывать хранимые процедуры? ... |
|||
:
Нравится:
Не нравится:
|
|||
05.12.2012, 21:45 |
|
Организация запросов из десктопного клиента к субд
|
|||
---|---|---|---|
#18+
Cat2Программистам "небаз" дико видеть в коде текстовые строки, которые должны выполнятся где-то там. Программисты баз к этому давно привыкли. Я полагаю, что ORM полновестно сможет работать тогда, когда базы будут изначально заточены на его использование. Пока это не так. Кобол - наше всио ... |
|||
:
Нравится:
Не нравится:
|
|||
05.12.2012, 22:52 |
|
Организация запросов из десктопного клиента к субд
|
|||
---|---|---|---|
#18+
Cat2Я полагаю, что это не автоматизация, а попытка снять-понизить барьер для вхождения в БД для начинающих программистов. Это не самоцель, а лишь одно из преимуществ ORM. Cat2Я полагаю, что ORM полновестно сможет работать тогда, когда базы будут изначально заточены на его использование. Пока это не так. Базы ничего не знают и не должны знать об ORM. В свою очередь, ORM должны знать всё о базах. Единая точка входа ПО для работы с базой - ORM. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.12.2012, 23:11 |
|
Организация запросов из десктопного клиента к субд
|
|||
---|---|---|---|
#18+
МСУБазы ничего не знают и не должны знать об ORM это не есть хорошо. ORM - в нынешнем виде костыль. Если ORM так хорош - где СУБД, где ORM API является нативным? ... |
|||
:
Нравится:
Не нравится:
|
|||
05.12.2012, 23:31 |
|
Организация запросов из десктопного клиента к субд
|
|||
---|---|---|---|
#18+
Алексей Кbeg-in-erпропущено... и получается разношёрстное решение.хотя это дело выбора. а проблемы возникают тогда, когда надо что то сделать , из оставшихся 10%. когда новые задачи идут в разрез с уже сделанным чистым ОРМ решением.Бытует мнение, что идеального решения не существует. Чисто SQL-решение, что не удивительно, тоже имеет свои недостатки. ORM + сервер приложений призваны их устранить. Забудем на время, что применение ORM в обоих случаях совершенно перпендикулярно... И вспомним, что даже "чистое SQL-решение" (которое может быть очень даже не "чистым") справляется с любой нагрузкой, от которой давно сдохнет самый правильный сервер приложений. Т.е., сервер приложений - лишний. Совсем. Алексей Кbeg-in-erпобольшому счёту , ОРМ это в первую очередь бизнес-решение. для экономии на SQLщиках. там где не надо много , там мож и прокатит.Программист, пишущий обращения к БД через ORM, должен знать SQL как "отче наш".Да-да... Это бы вложить в мозги "крутых ORMщиков", которые не только не знают (и не особо хотят знать SQL), но и даже не имеют вменяемого представления о базовых механизмах работы с данными и их местом во фреймворке... Алексей КORM - это автоматизация написания SQL-запросов, не более того.Угу... Типа, если доступ к реляционным данным идет не через SQL, то это уже и работать не будет... ISAM, тот же текст с разделителями, etc... ORM представляет собой методику отображения реляционной модели данных на объектную модель приложения (и обратно) - что к автоматизации написания запросов совершенно не стояло, не стоит и (в обозримом будущем) не будет стоять ни каким боком. Только вместо запросов и манипуляций с данными в БД пишутся запросы и манипуляции с объектами в программе - другая точка приложения усилий. Обеспечение функционала обмена данными между программными объектами и базой данных при этом никто не отменял - соответственно, общий объем и сложность приложения только увеличивается от этого. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.12.2012, 23:39 |
|
Организация запросов из десктопного клиента к субд
|
|||
---|---|---|---|
#18+
ИзопропилМСУБазы ничего не знают и не должны знать об ORM это не есть хорошо. ORM - в нынешнем виде костыль. Если ORM так хорош - где СУБД, где ORM API является нативным?Вообще-то, есть такие... Если исключить из рассмотрения NoSQL-варианты (OODB и прочие), оставив только имеющие отношение к "реляционным" - как минимум, Informix, DB2, Oracle... Запросы к этим СУБД могут давать "на выходе" данные объектного вида, тривиальным образом ("один-в-один") отображающиеся в классы в языках программирования. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.12.2012, 23:53 |
|
|
start [/forum/topic.php?fid=20&gotonew=1&tid=1405536]: |
0ms |
get settings: |
8ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
35ms |
get topic data: |
10ms |
get first new msg: |
9ms |
get forum data: |
3ms |
get page messages: |
93ms |
get tp. blocked users: |
1ms |
others: | 313ms |
total: | 491ms |
0 / 0 |