Re[3]: LINQ vs Store Procedure
От: Jakobz Россия  
Дата: 19.03.09 14:17
Оценка: +2
Здравствуйте, Tom, Вы писали:

J>>Если все это правда, то твой шеф — кретин. По совокупности следующих пунктов:

Tom>Я бы на вашем месте не был так котегоричен.

А почему бы не был? Почему бы шефу не являться кретином, и почему бы мне это здесь не констатировать?


J>>1. LINQ to SQL, завязаный только на хранимые процедуры — это "LINQ to SQL" без слова "LINQ". Что там собственно останется-то хорошего, если оттуда убрать запросы?

Tom>останется compile time проверки вызова стор.

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

От LINQ еще многое останется, на самом деле. Я просто хотел напомнить что LINQ в этой технологии все-таки ключевой элемент.


J>>2. Запросы компилируются и скорости перенос тех же самых запросов в хранимки не добавит. Это известный факт.

Tom>Разница огромна, при использовании линка запросы SQL генерит линк, при использовании явных запросов или стор — вы сами.

Я имел ввиду что перенос сгенеренных линкой запросов в хранимки не даст прироста. Но можно и переписать все, конечно, с полной уверенностью что "уж я-то шарю в базах, уж я-то всяко сделаю быстрее, чем тупой генератор". Но это обратно по поводу самодуров и кретинов. Далеко не факт что это даст прирост чистыми (см. "преждевременная оптимизация" и "5% кода занимают 95% времени").


Tom>Работать с хранимкапми на порядок удобнее, намного проще например отлаживать план выполнения.


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

Tom>найти узкое место — это действительно надо в первую очередь.


Нужно было это поставить первым и единственным пунктом. Остальные аргументы — до кучи, и, если копнуть поглубже, действительно могут быть спорны.
Re[3]: LINQ vs Store Procedure
От: DuШes  
Дата: 19.03.09 14:18
Оценка:
Здравствуйте, Lloyd, Вы писали:

L>Здравствуйте, Jakobz, Вы писали:


J>>1. LINQ to SQL, завязаный только на хранимые процедуры — это "LINQ to SQL" без слова "LINQ". Что там собственно останется-то хорошего, если оттуда убрать запросы?


L>+ маппиниг резалтсета хранимой процедуры на объекты.


вот это и есть ужос, который превратится в будущем в еще более ужос, когда придется расширять классы или структуру таблиц...
к тому же, самое плохое в linq to sql это то, что нет обратного маппинга из классов схемы в базу данных...в том же самом DX XPO эта проблема решена (не сочтите за рекламу )

L>+ tracking изменений

tracking изменений — где его вы видели, дерганье методов/событий из акксосоров свойств? ну если это имеете ввиду, то это совсем не трекинг
Re[4]: LINQ vs Store Procedure
От: Lloyd Россия  
Дата: 19.03.09 14:25
Оценка:
Здравствуйте, DuШes, Вы писали:

J>>>1. LINQ to SQL, завязаный только на хранимые процедуры — это "LINQ to SQL" без слова "LINQ". Что там собственно останется-то хорошего, если оттуда убрать запросы?


L>>+ маппиниг резалтсета хранимой процедуры на объекты.


DШ>вот это и есть ужос, который превратится в будущем в еще более ужос, когда придется расширять классы или структуру таблиц...


как тебе поможет его отсутствие "когда придется расширять классы или структуру таблиц"

L>>+ tracking изменений

DШ>tracking изменений — где его вы видели, дерганье методов/событий из акксосоров свойств?

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

DШ>ну если это имеете ввиду, то это совсем не трекинг


А что такое по-вашему трекинг?
Re[5]: LINQ vs Store Procedure
От: DuШes  
Дата: 19.03.09 14:33
Оценка:
Здравствуйте, Lloyd, Вы писали:


L>>>+ маппиниг резалтсета хранимой процедуры на объекты.


DШ>>вот это и есть ужос, который превратится в будущем в еще более ужос, когда придется расширять классы или структуру таблиц...


L>как тебе поможет его отсутствие "когда придется расширять классы или структуру таблиц"


не поможет, но и не помешает — а если не будет смысла его использования, зачем он будет вообще нужен...
т.е. речь о чем? есть результат хранимой процедуры, возвращаю два поля, name & id, мне нужно будет создать класс-враппер для этих получаемых данных, пометить их определенными атрибутами и в принципе начать использовать...расширяю выборку, нужно возвращать уже три поля, скажем добавилось lastname, меняю в процедуре, меняю враппер...
это если бы стали использовать методы/процедуры в linq

классическая схема — тот же самый класс по сути враппер над данными, datareader, ну и ручное кодирование — строка this.lastname = datareader.read(...)
трудозатраты по сути такие же, более того, можно за час работы написать свой orm враппер класс, который по имени свойства из класса сопоставит соотвествующее поле из выборки ...не в этом дело, просто пытаюсь доказать, что в данном случае, когда будут применяться процедуры в линке, необходимость в нем вообще отпадает

L>А что такое по-вашему трекинг?


ну уж по крайне мере не так, уж лучше через аспекты
Re[3]: LINQ vs Store Procedure
От: DuШes  
Дата: 19.03.09 14:35
Оценка:
Здравствуйте, Spender, Вы писали:

S>Здравствуйте, Jakobz, Вы писали:


J>>4. И самое главное: совершенное самодурство и кретинизм делать что-то потому что "я думаю что так будет быстрее". Промерить не судьба? Может у вас там где-нибудь StringBuilder поставить нужно вместо string += и все летать начнет? И переписывать ничего не нужно будет? Может быть есть только один тормозной запрос и его стоит вынуть и оптимизировать, вместо того, чтобы делать это для всех подряд? Если делается расчет на будущее — может стоит сначала написать нагрузочные тесты?


S>Может я телефончик его дам, Вы ему тоже это скажете. Наша команда замудохалась объяснять ему это. Нагрузочные тесты у нас выглядят так. Берутся все программисты и начинают тыкать по кнопочкам, в это время смотрится загрузка SQL сервера.


нет уж, заварил кашу сам разбирайся
Re[6]: LINQ vs Store Procedure
От: Lloyd Россия  
Дата: 19.03.09 14:40
Оценка:
Здравствуйте, DuШes, Вы писали:

DШ>классическая схема — тот же самый класс по сути враппер над данными, datareader, ну и ручное кодирование — строка this.lastname = datareader.read(...)

DШ>трудозатраты по сути такие же,

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

DШ>более того, можно за час работы написать свой orm враппер класс, который по имени свойства из класса сопоставит соотвествующее поле из выборки ...не в этом дело, просто пытаюсь доказать, что в данном случае, когда будут применяться процедуры в линке, необходимость в нем вообще отпадает


Зачем что-то писать, если это уже есть в составе Linq2Sql

L>>А что такое по-вашему трекинг?


DШ>ну уж по крайне мере не так, уж лучше через аспекты


Чем лучше?
Re[6]: LINQ vs Store Procedure
От: kenzo_u  
Дата: 19.03.09 14:41
Оценка:
Здравствуйте, IB, Вы писали:

IB>CRUD — нет, а вот в логике по сложнее я скорее за процедуры, чем за View и триггеры.


А может лучше все запросы держать в одном месте? Либо только в виде ХП, либо только в коде программы в DAL-слое?
Re[7]: LINQ vs Store Procedure
От: DuШes  
Дата: 19.03.09 14:44
Оценка:
Здравствуйте, Lloyd, Вы писали:

L>Здравствуйте, DuШes, Вы писали:


DШ>>классическая схема — тот же самый класс по сути враппер над данными, datareader, ну и ручное кодирование — строка this.lastname = datareader.read(...)

DШ>>трудозатраты по сути такие же,

L>Какие тогда притензии к стандартному мапперу? Озвучь, пожалуйста.


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

DШ>>более того, можно за час работы написать свой orm враппер класс, который по имени свойства из класса сопоставит соотвествующее поле из выборки ...не в этом дело, просто пытаюсь доказать, что в данном случае, когда будут применяться процедуры в линке, необходимость в нем вообще отпадает


L>Зачем что-то писать, если это уже есть в составе Linq2Sql


вместе с напильником...

L>>>А что такое по-вашему трекинг?


DШ>>ну уж по крайне мере не так, уж лучше через аспекты


L>Чем лучше?


ну по крайне мере хотя бы тем, что не нужно ВООБЩЕ задумываться о включении какой-либо логики в свойства, я уж не спрашиваю вас о том, как вы сделайте трекинг полей/вызовов методов без аспектов
Re[8]: LINQ vs Store Procedure
От: Lloyd Россия  
Дата: 19.03.09 14:59
Оценка:
Здравствуйте, DuШes, Вы писали:

DШ>>>классическая схема — тот же самый класс по сути враппер над данными, datareader, ну и ручное кодирование — строка this.lastname = datareader.read(...)

DШ>>>трудозатраты по сути такие же,

L>>Какие тогда притензии к стандартному мапперу? Озвучь, пожалуйста.


DШ>прежде чем озвучивать свои претензии я не услышал вашего мнения о преимуществах использования "стандартного" маппера


  1. Он есть
  2. качественно оттестирован толпой тестеров в микрософте
  3. по нему есть документация
  4. если с ним возникнет какая-то проблема, существует большое кол-во людей, которые его использовали в очень разных сценариях и они смогут мне помочь

DШ>>>более того, можно за час работы написать свой orm враппер класс, который по имени свойства из класса сопоставит соотвествующее поле из выборки ...не в этом дело, просто пытаюсь доказать, что в данном случае, когда будут применяться процедуры в линке, необходимость в нем вообще отпадает


L>>Зачем что-то писать, если это уже есть в составе Linq2Sql


DШ>вместе с напильником...


Что "вместе с напильником"?

L>>>>А что такое по-вашему трекинг?


DШ>>>ну уж по крайне мере не так, уж лучше через аспекты


L>>Чем лучше?


DШ>ну по крайне мере хотя бы тем, что не нужно ВООБЩЕ задумываться о включении какой-либо логики в свойства,


Задумываться об этом действительно не стоит, т.к. эту проблему вполне себе решает Linq2Sql-овский дизайнер.

DШ>я уж не спрашиваю вас о том, как вы сделайте трекинг полей/вызовов методов без аспектов


Это worst practise — работать с полями напрямую при наличии соответствующих свойств.
Я в свою очередь спрошу как вы собрались делать трекинг полей через аспекты, если я захочу работать с ними через reflection
Re[7]: LINQ vs Store Procedure
От: IB Австрия http://rsdn.ru
Дата: 19.03.09 15:03
Оценка: :)
Здравствуйте, kenzo_u, Вы писали:

_>А может лучше все запросы держать в одном месте? Либо только в виде ХП, либо только в коде программы в DAL-слое?

Если есть DAL, то где конкретно находятся запросы для квалифицированного разработчика — фиолетово. Для стажеров — жестко, только хранимки.
... << RSDN@Home 1.2.0 alpha 4 rev. 1082>>
Мы уже победили, просто это еще не так заметно...
Re[9]: LINQ vs Store Procedure
От: DuШes  
Дата: 19.03.09 15:13
Оценка:
Здравствуйте, Lloyd, Вы писали:


L>

    L>
  1. Он есть
    L>
  2. качественно оттестирован толпой тестеров в микрософте
    настолько качественно, что забыли обратный маппинг в базу

    L>
  3. по нему есть документация
    L>
  4. если с ним возникнет какая-то проблема, существует большое кол-во людей, которые его использовали в очень разных сценариях и они смогут мне помочь
    да, эти люди начинают такие темы, в которой мы сейчас и присутствуем
    L>

вообщем, linq to sql (именно to sql) насктолько хорош, насколько его благополучно похоронили

DШ>>вместе с напильником...


L>Что "вместе с напильником"?

те проблемы, о которых писал, если говорим о процедурах


L>Задумываться об этом действительно не стоит, т.к. эту проблему вполне себе решает Linq2Sql-овский дизайнер.


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

L>Я в свою очередь спрошу как вы собрались делать трекинг полей через аспекты, если я захочу работать с ними через reflection

ну мы так далеко зайдем вплоть до msil injection
Re[10]: LINQ vs Store Procedure
От: Lloyd Россия  
Дата: 19.03.09 15:23
Оценка:
Здравствуйте, DuШes, Вы писали:

DШ>вообщем, linq to sql (именно to sql) насктолько хорош, насколько его благополучно похоронили


Его похоронили не из-за того, что наколенные решения лучше, а из-за того, что есть EF, который во многом дублирует функциональность LINQ2SQL-а.
Кстати, ты вроде как пообещал озвучить претенции после того, как я приведу преимущества стандартного маппера. Ваш ход.

DШ>>>вместе с напильником...


L>>Что "вместе с напильником"?

DШ>те проблемы, о которых писал, если говорим о процедурах

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

L>>Задумываться об этом действительно не стоит, т.к. эту проблему вполне себе решает Linq2Sql-овский дизайнер.


DШ>да, наверно у вас не было такой практики, когда полностью приходится убивать всю схему и генерировать снова , только для того, чтобы учесть все изменения, внесенные в базу после того, как схема уже была сгенерирована ... особенно приятно, когда есть вычисляемые поля/свойства, реализованный в partial classes


Конечно, у меня не возникало таких проблем. У нас на проекте есть сложившаяся процедура внесения изменений в схему базы, благодаря которой нет необходимости "убивать всю схему и генерировать снова". Это экономит кучу времени. Рекомендую вам с коллегами сесть как-нить вечерком с пивком и решить раз и навсегда, как по-правильному вносить изменения.

L>>Я в свою очередь спрошу как вы собрались делать трекинг полей через аспекты, если я захочу работать с ними через reflection

DШ>ну мы так далеко зайдем вплоть до msil injection

не поможет, уверяю тебя.
Re[11]: LINQ vs Store Procedure
От: DuШes  
Дата: 19.03.09 15:51
Оценка:
Здравствуйте, Lloyd, Вы писали:
L>Кстати, ты вроде как пообещал озвучить претенции после того, как я приведу преимущества стандартного маппера. Ваш ход.
L>>>Что "вместе с напильником"?
DШ>>те проблемы, о которых писал, если говорим о процедурах
L>Напиши, пожалуйста полное предложение. Не получается у меня из "вместе с напильником" и "те проблемы, о которых писал, если говорим о процедурах" составить что-то осмысленное.

как-раз и пытался доказать, что преимуществ кроме как визуального представления схемы и картинок нет...и в ваших доводах не увидел.
и раз уж речь зашла именно иб использовании процедур в рамках linq, то давайте говорить о процедурах — вот тут проблема а не в стандартном маппере на таблицы (мух отделите пожалуйста)..когда говорим о процедурах (а лично для себя не вижу пока ситуации, чтобы не использовать процедуры) вот тут и возникают проблемы с маппингом в неизвестность и проблемы синхронизации возвращаемых данных с классама-врапперами на стороне шарпа...странно, что вы их в упор не видите...хотя бы то, что стандартный враппер более-менее сложную процедуру прсото не поймет и не сгенерирует на основании данных, возвращаемых процедурой, вменяемый класс, который можно было бы потом применять в рамках c#.

насчет претензий — слова "претензия" означает несколько иное, я линк не ругал к вашему сведению, есть у него область приминения, а именно, настольные приложения или небольшие низконагруженные сайты..
ладно, пусть это будет претензия
1. не умеет работать с распределенными базами, где имеет место быть несколько баз и несколько серверов — или же вы используете несколько контекстов? тогда может быть и несколько соединений?
2. нельзя создать класс-сущность, маппируемую в разные таблицы...
3. нельзя без напильника научить методы возвращать наборы объектовбез написания вручную классов-врапперов няд этими данными



L>Конечно, у меня не возникало таких проблем. У нас на проекте есть сложившаяся процедура внесения изменений в схему базы, благодаря которой нет необходимости "убивать всю схему и генерировать снова". Это экономит кучу времени. Рекомендую вам с коллегами сесть как-нить вечерком с пивком и решить раз и навсегда, как по-правильному вносить изменения.


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

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

L>>>Я в свою очередь спрошу как вы собрались делать трекинг полей через аспекты, если я захочу работать с ними через reflection

DШ>>ну мы так далеко зайдем вплоть до msil injection

L>не поможет, уверяю тебя.


это вот про что сейчас? ...можно конечно скатиться в сторону обсуждения плюсов и минусов использования аспектов, тогда да, наверно — не поможет вам
Re[4]: LINQ vs Store Procedure
От: Jakobz Россия  
Дата: 19.03.09 16:04
Оценка: 77 (2) +3
Здравствуйте, Spender, Вы писали:

S>Я тут ещё одно уточнение хочу вставить.

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

Такое уж точно не из-за компиляции запросов.
Загрузку как мониторите? Когда и кому перестает отвечать? Может быть дело в блокировках? Может быть опять же в каком-то одном запросе и проблему решит один индекс? Какой запрос тормозит и жрет ресурсы?
Открывайте activity monitor, sql server profiler. Добавляйте логгирование. Попытайтесь изолировать проблему: посмотрите при каких действиях подвисает, а при каких — нет, от чего это зависит. Напишите нагрузочные тесты, воспроизводящие проблему. Понизьте уровень изоляции транзакций и посмотрите помогает или нет. Посмотрите планы самых ресурсоёмких запросов.
Короче нужно всего-то найти один bottleneck и устранить. Мой совет: найдите его сами, исправьте, и покажите начальнику. Если он кретин только в техническом плане, может он будет после этого считаться с вашим мнением, вместо того, чтобы принимать кретинские технические решения.
Re[12]: LINQ vs Store Procedure
От: Lloyd Россия  
Дата: 19.03.09 16:12
Оценка:
Здравствуйте, DuШes, Вы писали:

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


DШ>как-раз и пытался доказать, что преимуществ кроме как визуального представления схемы и картинок нет...и в ваших доводах не увидел.


в моих доводах ни слова не было про это.

DШ>и раз уж речь зашла именно иб использовании процедур в рамках linq, то давайте говорить о процедурах — вот тут проблема а не в стандартном маппере на таблицы (мух отделите пожалуйста)..


Маппер на таблицы и маппер на резалтсет процедуры — это один и тот же маппер.

DШ>когда говорим о процедурах (а лично для себя не вижу пока ситуации, чтобы не использовать процедуры) вот тут и возникают проблемы с маппингом в неизвестность и проблемы синхронизации возвращаемых данных с классама-врапперами на стороне шарпа...странно, что вы их в упор не видите...хотя бы то, что стандартный враппер более-менее сложную процедуру прсото не поймет и не сгенерирует на основании данных, возвращаемых процедурой, вменяемый класс, который можно было бы потом применять в рамках c#.


Маппер на занимается генерацией этого класса. Его задача — результат выполнения процедуры залить в тот класс, в который ему скажут.

DШ>насчет претензий — слова "претензия" означает несколько иное, я линк не ругал к вашему сведению, есть у него область приминения, а именно, настольные приложения или небольшие низконагруженные сайты..

DШ>ладно, пусть это будет претензия
DШ>1. не умеет работать с распределенными базами, где имеет место быть несколько баз и несколько серверов — или же вы используете несколько контекстов? тогда может быть и несколько соединений?

При чем тут маппер?

DШ>2. нельзя создать класс-сущность, маппируемую в разные таблицы...


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

DШ>3. нельзя без напильника научить методы возвращать наборы объектов без написания вручную классов-врапперов няд этими данными


Чего-чего? Еще раз и помедленнее.
Какие методы? Почему нельзя? При чем тут маппер?

L>>Конечно, у меня не возникало таких проблем. У нас на проекте есть сложившаяся процедура внесения изменений в схему базы, благодаря которой нет необходимости "убивать всю схему и генерировать снова". Это экономит кучу времени. Рекомендую вам с коллегами сесть как-нить вечерком с пивком и решить раз и навсегда, как по-правильному вносить изменения.


DШ>вот и поделитесь — пока на ум только одно приходит, где-то кричится о том, что добавили новое поле в таблицу, и вручную делаем сотвествующее свойство в классе с указанием, откуда оно смаппировано — это если не убивая часть схемы


Никто никуда не кричит. Тот, кто изменяет схему, обязан изменить и соответствующие entity. Самый простой способ — это внести это изменение вручную в dbml.

L>>>>Я в свою очередь спрошу как вы собрались делать трекинг полей через аспекты, если я захочу работать с ними через reflection

DШ>>>ну мы так далеко зайдем вплоть до msil injection

L>>не поможет, уверяю тебя.


DШ>это вот про что сейчас? ...можно конечно скатиться в сторону обсуждения плюсов и минусов использования аспектов, тогда да, наверно — не поможет вам


А вы не личности не переходите. У нас проблем с Linq2Sql-м как-то не наблюдается.
Кстати, ты так и не сказал, чем AOP будет лучше по сравнению с банальным генерированием сущностей из dbml-я.
Re[5]: LINQ vs Store Procedure
От: Spender Канада http://rybkov.livejournal.com
Дата: 19.03.09 16:32
Оценка:
Здравствуйте, Jakobz, Вы писали:

J>Такое уж точно не из-за компиляции запросов.

J>Загрузку как мониторите? Когда и кому перестает отвечать? Может быть дело в блокировках? Может быть опять же в каком-то одном запросе и проблему решит один индекс? Какой запрос тормозит и жрет ресурсы?
J>Открывайте activity monitor, sql server profiler. Добавляйте логгирование. Попытайтесь изолировать проблему: посмотрите при каких действиях подвисает, а при каких — нет, от чего это зависит. Напишите нагрузочные тесты, воспроизводящие проблему. Понизьте уровень изоляции транзакций и посмотрите помогает или нет. Посмотрите планы самых ресурсоёмких запросов.
J>Короче нужно всего-то найти один bottleneck и устранить. Мой совет: найдите его сами, исправьте, и покажите начальнику. Если он кретин только в техническом плане, может он будет после этого считаться с вашим мнением, вместо того, чтобы принимать кретинские технические решения.

Если бы я все это умел У нас есть человек специальный для этого. Он полностью занимается БД на стороне SQL сервера. Может даже оптимизирует что-то там. Но вряд ли.
Спасибо за совет. Попробую все это рассказать шефу.
Re[13]: LINQ vs Store Procedure
От: DuШes  
Дата: 19.03.09 16:48
Оценка:
Здравствуйте, Lloyd, Вы писали:
L>>>не поможет, уверяю тебя.

[skipped]
я думаю, весь разговор скатился к придираниям к словам; под linq to sql и понимайте маппер в/из базы данных, щас еще начнем обсуждать linq провайдеры ...
я вопринимаю linq to sql как некий FW, который диктует правила и накладывает ограничения для работы с данными, если возникает необходимость использования напильника как например для работы с процедурами и танцев с бубнами, то в топку..

L>А вы не личности не переходите. У нас проблем с Linq2Sql-м как-то не наблюдается.

L>Кстати, ты так и не сказал, чем AOP будет лучше по сравнению с банальным генерированием сущностей из dbml-я.

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

еще раз: если вы используете linq to sql, то слава богу и продолжайте его использовать, из все нашей дискуссии я остался убежден в том, что когда речь заходит об использовании процедур в линке, то тут его смысл теряется...из ваших слов все преимущества сводятся только:

1. Он есть
2. качественно оттестирован толпой тестеров в микрософте
3. по нему есть документация
4. если с ним возникнет какая-то проблема, существует большое кол-во людей, которые его использовали в очень разных сценариях и они смогут мне помочь


минусы я показал, жалко что не видите или не хотите видеть, зато:

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

Никто никуда не кричит. Тот, кто изменяет схему, обязан изменить и соответствующие entity. Самый простой способ — это внести это изменение вручную в dbml.


да, преимущества налицо , а теперь представим, что полностью перешли на использование процедур, так себе и представляю, как вы вручную пишите классы обертки над возвращаемыми данными...потому что ну не может и не умеет и не сможет linq to sql designer сгенерировать на основе t-sql кода то представление класса, которое требуется...за исключением редких банальных select * from;

предлагаю закрыть, судя по всему каждый останется при своем мнении
Re[8]: LINQ vs Store Procedure
От: kenzo_u  
Дата: 19.03.09 16:58
Оценка:
Здравствуйте, IB, Вы писали:

IB>Здравствуйте, kenzo_u, Вы писали:


_>>А может лучше все запросы держать в одном месте? Либо только в виде ХП, либо только в коде программы в DAL-слое?

IB>Если есть DAL, то где конкретно находятся запросы для квалифицированного разработчика — фиолетово. Для стажеров — жестко, только хранимки.

Почему фиолетово для квалифицированного разработчика и почему только хранимки для стажеров?
Re[14]: LINQ vs Store Procedure
От: Lloyd Россия  
Дата: 19.03.09 17:26
Оценка:
Здравствуйте, DuШes, Вы писали:

DШ>я думаю, весь разговор скатился к придираниям к словам; под linq to sql и понимайте маппер в/из базы данных,


не надо менять предмет обсуждения. вы высказались про linq2sql-овский маппер, что он "ужос":

L>+ маппиниг резалтсета хранимой процедуры на объекты.
вот это и есть ужос, который превратится в будущем в еще более ужос, когда придется расширять классы или структуру таблиц...

Что вы тут имели в виду конкретно маппер или все-таки весь linq2sql целиком?

DШ>щас еще начнем обсуждать linq провайдеры ...


зачем? разговор ведь идет не о linq-е, и даже не о linq2sql-е, а о его маппере. зачем в этом котексте обсуждать какие-то провайдеры?

DШ>я вопринимаю linq to sql как некий FW, который диктует правила и накладывает ограничения для работы с данными, если возникает необходимость использования напильника как например для работы с процедурами и танцев с бубнами, то в топку..


Почему вы отказываетесь продемонсnрировать, какие у вас возникли проблемы с маппером?

DШ>в рамках этой темы мы не будем обсуждать преимущества и минусы аспектов, если это вас так интересует, создайте новую тему или добро пожаловать в поиск...и мысль об аоп была рождена с учетом мысли ручного кодирования классов-врапперов


Нет, меня интересует не OAP как таковое, а преимущества использования AOP перед использванием классов сущностей, создаваемых .dbml-ем.

DШ>еще раз: если вы используете linq to sql, то слава богу и продолжайте его использовать, из все нашей дискуссии я остался убежден в том, что когда речь заходит об использовании процедур в линке, то тут его смысл теряется...из ваших слов все преимущества сводятся только:

DШ>

DШ> 1. Он есть
DШ> 2. качественно оттестирован толпой тестеров в микрософте
DШ> 3. по нему есть документация
DШ> 4. если с ним возникнет какая-то проблема, существует большое кол-во людей, которые его использовали в очень разных сценариях и они смогут мне помочь


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

DШ>минусы я показал, жалко что не видите или не хотите видеть, зато:

DШ>

DШ>Я так понимаю ты работаешь с процедурами. Так вот в этом случае ты вполне можешь указать, одну и ту же сущность как результат работы разных процедур. Единственно, ты не сможешь воспользоваться ею для update-а в базу.

DШ>

DШ>Никто никуда не кричит. Тот, кто изменяет схему, обязан изменить и соответствующие entity. Самый простой способ — это внести это изменение вручную в dbml.


DШ>да, преимущества налицо , а теперь представим, что полностью перешли на использование процедур, так себе и представляю, как вы вручную пишите классы обертки над возвращаемыми данными...потому что ну не может и не умеет и не сможет linq to sql designer сгенерировать на основе t-sql кода то представление класса, которое требуется...за исключением редких банальных select * from;


Еще раз напоминаю, что предмет обсуждения маппер, а не linq2sql designer.

DШ>предлагаю закрыть, судя по всему каждый останется при своем мнении


Предлагаю продолжить. Просто давай сузим тему до маппера исключительно и не будем с нее сходить. Ок?
Re[15]: LINQ vs Store Procedure
От: DuШes  
Дата: 19.03.09 18:01
Оценка:
Здравствуйте, Lloyd, Вы писали:

L>Здравствуйте, DuШes, Вы писали:


DШ>>я думаю, весь разговор скатился к придираниям к словам; под linq to sql и понимайте маппер в/из базы данных,


ну давайте продолжим
L>Почему вы отказываетесь продемонсnрировать, какие у вас возникли проблемы с маппером?

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

L>не надо менять предмет обсуждения. вы высказались про linq2sql-овский маппер, что он "ужос":

L>

L>+ маппиниг резалтсета хранимой процедуры на объекты.
L>вот это и есть ужос, который превратится в будущем в еще более ужос, когда придется расширять классы или структуру таблиц...

L>Что вы тут имели в виду конкретно маппер или все-таки весь linq2sql целиком?

не знаю как вы, но лично я не отделяю маппер и linq to sql data context designer и рассматриваю их как неделимое целое ... дык вот, маппер для процедур — его нет да в принципе теоретически быть не может, когда речь будет идти о возвращаемом датасете из нескольких таблиц...
в целом, если вы просто говорите что мол да, маппер свои задачи чисто по маппингу в/из базы/классы выполняет — то да, тут не соглашаться не с чем...это самое простое что есть забиндить поле из таблицы в соотвествующее свойство из класса,
но использовать чисто маппер из всего linq to sql ради только маппера вообще теряет смысл — и на этом давайте закончим наше обсуждение именно маппера, а не в целом linq to sql


теперь в целом по linq to sql в рамках стартовой темы и применительно использования процедур: мое мнение — смысла использовать сам linqtosql и в том числе и сам его маппер смысла не имеет, если схема строится только на процедурах, более того, в более-менее сложной системе, одно из требований которой скорость обработки данных, использовать linqtosql даже без использования процедур тоже не имеет смысла
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.