Здравствуйте, MxKazan, Вы писали:
MK>Согласен с p.s. ...реальным плюсом со времен C# 1.1 явились только generic'и...меня огорчают extension methods...Подстановка типов для generic'ов...Кому оно необходимо?..А еще я бы убил yield return...
Я не понял — это такой тонкий стеб?
Если нет, то я знаю отличный C# который тебе подойдет — Java. Отличный такой каменный топор с поддержкой ООП. Как раз для тех кто боится машин и оборудования.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, VladD2, Вы писали:
VD>Здравствуйте, MxKazan, Вы писали:
MK>>Согласен с p.s. ...реальным плюсом со времен C# 1.1 явились только generic'и...меня огорчают extension methods...Подстановка типов для generic'ов...Кому оно необходимо?..А еще я бы убил yield return...
VD>Я не понял — это такой тонкий стеб?
VD>Если нет, то я знаю отличный C# который тебе подойдет — Java. Отличный такой каменный топор с поддержкой ООП. Как раз для тех кто боится машин и оборудования.
Причем здесь Java? Меня спросили про C# 3.0, я высказал своё мнение. На мой взгляд, в языке появляется всё больше и больше способов, как любят говорить некоторые, "выстрелить себе в ногу". Я не боюсь ни машин, ни оборудования и часто на ура воспринимаю разные нововведения. Но вот я чувствую, что скоро только и придется заниматься отучением "молодых" где ни попадя впихивать extension methods, юзать без понимания смысла yield return, попутно занимаясь разгадыванием, какой же generic метод решил вызвать компилятор, из-за того, что позволил чуваку не вписывать тип-параметр. Знаю одну очень хорошую фирму, небольшую, но с очень высоким профессиональным уровнем. Они свой Framework для бизнес-приложений давно наваяли в том варианте, который теперь используются в dependency properties в WPF. Так вот не торопятся переходить на .Net 3, именно потому что не видят от этого плюсов. С первого на второй перескочили практически сразу. Для меня это показатель.
Здравствуйте, MxKazan, Вы писали:
MK>Так вот не торопятся переходить на .Net 3, именно потому что не видят от этого плюсов. С первого на второй перескочили практически сразу.
Здравствуйте, Lloyd, Вы писали:
L>Здравствуйте, MxKazan, Вы писали:
MK>>Так вот не торопятся переходить на .Net 3, именно потому что не видят от этого плюсов. С первого на второй перескочили практически сразу.
L>Неужели их даже линк не вдохновил?
Если рассматривать Linq как средство доступа к БД, то ими разработанный Фреймворк сам позволяет делать примерно то же самое — есть низкий уровень генерации SQL, а всё остальное — обычные .Net классы, умело вписанные в стандартные задачи бизнеса. Поэтому Linq им просто не нужен. Более того, как человек использовавший и то и другое, не могу однозначно сказать что лучше. Подозреваю, что другие сферы применения Linq не сильно представлены в их приложениях, чтобы ради этого переходить на новый FW.
По мне, Linq — хорошая вещь как идея, надо было упомянуть его вместе с generic'ами. Но реализация Linq-to-Sql огорчила, например, невозможностью сделать DELETE без предварительного SELECT'а. Возможно я просто не нашел как, времени тогда было немного, буду рад если кто поделится ссылками.
Здравствуйте, MxKazan, Вы писали:
MK>Если рассматривать Linq как средство доступа к БД, то ими разработанный Фреймворк сам позволяет делать примерно то же самое — есть низкий уровень генерации SQL, а всё остальное — обычные .Net классы, умело вписанные в стандартные задачи бизнеса. Поэтому Linq им просто не нужен. Более того, как человек использовавший и то и другое, не могу однозначно сказать что лучше. Подозреваю, что другие сферы применения Linq не сильно представлены в их приложениях, чтобы ради этого переходить на новый FW.
Нет, я имел в виду Linq to Objects
MK>По мне, Linq — хорошая вещь как идея, надо было упомянуть его вместе с generic'ами. Но реализация Linq-to-Sql огорчила, например, невозможностью сделать DELETE без предварительного SELECT'а. Возможно я просто не нашел как, времени тогда было немного, буду рад если кто поделится ссылками.
Не знаю, сработает ли, но можно пропробовать создать пустую сущность с выставленным ID, приаттачить ее к контексту, и потом удалить ее из контекста.
Здравствуйте, Lloyd, Вы писали:
L>Не знаю, сработает ли, но можно пропробовать создать пустую сущность с выставленным ID, приаттачить ее к контексту, и потом удалить ее из контекста.
Речь не об ID.
Речь об аналоге
delete * from students s where (select min(mark) from exam where exam.studentID = s.id) < 3
Заселектить таких студентов мы можем только в путь. А вот делитнуть — не вполне понятно как.
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Здравствуйте, MxKazan, Вы писали:
MK>Так вот не торопятся переходить на .Net 3, именно потому что не видят от этого плюсов. С первого на второй перескочили практически сразу. Для меня это показатель.
Это показатель того, что со временем люди становятся всё более и более консервативными и всё больше и больше боятся расстаться со своим хламом.
Неясность изложения обычно происходит от путаницы в мыслях.
Если нам не помогут, то мы тоже никого не пощадим.
Здравствуйте, Sinclair, Вы писали:
S>Здравствуйте, Lloyd, Вы писали:
L>>Не знаю, сработает ли, но можно пропробовать создать пустую сущность с выставленным ID, приаттачить ее к контексту, и потом удалить ее из контекста. S>Речь не об ID. S>Речь об аналоге
S>
S>delete * from students s where (select min(mark) from exam where exam.studentID = s.id) < 3
S>
S>Заселектить таких студентов мы можем только в путь. А вот делитнуть — не вполне понятно как.
Именно об этом речь. Сделать что-то вроде "DELETE FROM tblMyTable WHERE myTableField = myProvidedValue" Как? Просмотрел ряд форумов, где прямо так и писали, мол "не могёт так Linq-To-Sql" — вначале заселекти всё, что myTableField = myProvidedValue, а потом уже удаляй. Никак ведь не катит, а
Здравствуйте, IT, Вы писали:
IT>Здравствуйте, MxKazan, Вы писали:
MK>>Так вот не торопятся переходить на .Net 3, именно потому что не видят от этого плюсов. С первого на второй перескочили практически сразу. Для меня это показатель.
IT>Это показатель того, что со временем люди становятся всё более и более консервативными и всё больше и больше боятся расстаться со своим хламом.
Возможно и так. Однако, как я уже писал в соседней ветке, попробовав оба подхода (их FW и Linq), сам не могу сказать что Linq прямо так уж круче. В любом случае, не назвал бы работников той фирмы консервативными. Скорее они реально стараются взешивать "а надо ли?". Возможно Linq просто не оказался столь мощным аргументом (и я понимаю почему, опять же, см. соседний тред), а остальное — extensions и пр.лабуда успешно получены путем создания собственной библиотеки контролов. Ну вот, например, прежде чем перейти на FW2, плюсы generic'ов выясняли различными тестами — реально ли быстрее. Да — быстрее, выше, сильнее. Что могут предложить нововведения C# 3.0?
Здравствуйте, MxKazan, Вы писали:
MK>Что могут предложить нововведения C# 3.0?
Я не знаю какие задачи они решают, поэтому без понятия что им может предложить C#.
Мне C# 3.0 дал следующее:
1. Типизацию работы с данными БД.
2. linq 2 objects принципиально изменил способы обработки данных в памяти.
3. Возможность работать в функциональном стиле с человеческим лицом.
Неясность изложения обычно происходит от путаницы в мыслях.
Если нам не помогут, то мы тоже никого не пощадим.
Здравствуйте, Sinclair, Вы писали:
S>Здравствуйте, Lloyd, Вы писали:
L>>Не знаю, сработает ли, но можно пропробовать создать пустую сущность с выставленным ID, приаттачить ее к контексту, и потом удалить ее из контекста. S>Речь не об ID. S>Речь об аналоге
S>
S>delete * from students s where (select min(mark) from exam where exam.studentID = s.id) < 3
S>
S>Заселектить таких студентов мы можем только в путь. А вот делитнуть — не вполне понятно как.
Если такие запросы выполнять, то Identity Tracking совсем работать не будет.
Здравствуйте, IT, Вы писали:
IT>Здравствуйте, MxKazan, Вы писали:
MK>>Что могут предложить нововведения C# 3.0?
IT>Я не знаю какие задачи они решают, поэтому без понятия что им может предложить C#.
IT>Мне C# 3.0 дал следующее:
IT>1. Типизацию работы с данными БД.
Ну в этом Linq далеко не первый. При этом в нём и гемора хватает, см. про удаление
. Мне также, например, не понравилось отсутствие того, что в ADO Entity Framework называют концептуальным слоем. Насколько я понимаю, Linq-to-Sql настраивается на модель БД при помощи атрибутов, следовательно, например, при изменении имени поля, мне приходится заниматься перегенерацией классов и перекопиляцией. Я уже и молчу про то, что куча настроек теряется при перегенерации (например, касательно участия поля в update'ах)
IT>2. linq 2 objects принципиально изменил способы обработки данных в памяти.
Так. Я видимо не в теме. А что принципиального нового linq 2 objects внёс по части "способы обработки данных в памяти"?
IT>3. Возможность работать в функциональном стиле с человеческим лицом.
Честно говоря, никогда не страдал от отсутствия подобного в C#
Здравствуйте, MxKazan, Вы писали:
IT>>1. Типизацию работы с данными БД. MK>Ну в этом Linq далеко не первый. При этом в нём и гемора хватает, см. про удаление
. Мне также, например, не понравилось отсутствие того, что в ADO Entity Framework называют концептуальным слоем. Насколько я понимаю, Linq-to-Sql настраивается на модель БД при помощи атрибутов, следовательно, например, при изменении имени поля, мне приходится заниматься перегенерацией классов и перекопиляцией. Я уже и молчу про то, что куча настроек теряется при перегенерации (например, касательно участия поля в update'ах)
Вы просто не умеете его готовить. Я юзаю Linq с самого релиза, проблем не возникало.
IT>>2. linq 2 objects принципиально изменил способы обработки данных в памяти. MK>Так. Я видимо не в теме. А что принципиального нового linq 2 objects внёс по части "способы обработки данных в памяти"?
IT>>3. Возможность работать в функциональном стиле с человеческим лицом. MK>Честно говоря, никогда не страдал от отсутствия подобного в C#
Вы действительно не в тебе, были бы в теме — оценили бы преимущества.
ЗЫ. Я подобное мнение видел у прожженых C++ников, которые впоследствие перешли на C#.
Здравствуйте, gandjustas, Вы писали:
G>Здравствуйте, MxKazan, Вы писали:
IT>>>1. Типизацию работы с данными БД. MK>>Ну в этом Linq далеко не первый. При этом в нём и гемора хватает, см. про удаление
. Мне также, например, не понравилось отсутствие того, что в ADO Entity Framework называют концептуальным слоем. Насколько я понимаю, Linq-to-Sql настраивается на модель БД при помощи атрибутов, следовательно, например, при изменении имени поля, мне приходится заниматься перегенерацией классов и перекопиляцией. Я уже и молчу про то, что куча настроек теряется при перегенерации (например, касательно участия поля в update'ах) G>Вы просто не умеете его готовить. Я юзаю Linq с самого релиза, проблем не возникало.
Не-не-не, так дело не пойдёт. Есть конкретная задача, я её привел в теме, куда ведет ссылка. Прошу, выдайте мне решение. Я хочу удалить объекты из базы, просто по какому-то критерию.
IT>>>2. linq 2 objects принципиально изменил способы обработки данных в памяти. MK>>Так. Я видимо не в теме. А что принципиального нового linq 2 objects внёс по части "способы обработки данных в памяти"?
IT>>>3. Возможность работать в функциональном стиле с человеческим лицом. MK>>Честно говоря, никогда не страдал от отсутствия подобного в C#
G>Вы действительно не в тебе, были бы в теме — оценили бы преимущества.
Отмахнуться — это удобно. А ответить на вопрос?
G>ЗЫ. Я подобное мнение видел у прожженых C++ников, которые впоследствие перешли на C#.
Можно расслабиться и спокойно общаться. Мой профессиональный опыт — 3 года сплошного C#. Никакого C++.
Здравствуйте, MxKazan, Вы писали:
MK>Здравствуйте, gandjustas, Вы писали:
G>>Здравствуйте, MxKazan, Вы писали:
IT>>>>1. Типизацию работы с данными БД. MK>>>Ну в этом Linq далеко не первый. При этом в нём и гемора хватает, см. про удаление
. Мне также, например, не понравилось отсутствие того, что в ADO Entity Framework называют концептуальным слоем. Насколько я понимаю, Linq-to-Sql настраивается на модель БД при помощи атрибутов, следовательно, например, при изменении имени поля, мне приходится заниматься перегенерацией классов и перекопиляцией. Я уже и молчу про то, что куча настроек теряется при перегенерации (например, касательно участия поля в update'ах) G>>Вы просто не умеете его готовить. Я юзаю Linq с самого релиза, проблем не возникало. MK>Не-не-не, так дело не пойдёт. Есть конкретная задача, я её привел в теме, куда ведет ссылка. Прошу, выдайте мне решение. Я хочу удалить объекты из базы, просто по какому-то критерию.
Не получится никак. Вернее совсем никак. Это противречит реализации Linq2SQL. Я готов мириться с такой вселенской несправедливостью, учитывая кучу других полезностей.
Если вам нужны все возможности SQL, то используйте SQL, а не Linq.
Здравствуйте, gandjustas, Вы писали:
G>Здравствуйте, MxKazan, Вы писали:
MK>>Здравствуйте, gandjustas, Вы писали:
G>>>Здравствуйте, MxKazan, Вы писали:
IT>>>>>1. Типизацию работы с данными БД. MK>>>>Ну в этом Linq далеко не первый. При этом в нём и гемора хватает, см. про удаление
. Мне также, например, не понравилось отсутствие того, что в ADO Entity Framework называют концептуальным слоем. Насколько я понимаю, Linq-to-Sql настраивается на модель БД при помощи атрибутов, следовательно, например, при изменении имени поля, мне приходится заниматься перегенерацией классов и перекопиляцией. Я уже и молчу про то, что куча настроек теряется при перегенерации (например, касательно участия поля в update'ах) G>>>Вы просто не умеете его готовить. Я юзаю Linq с самого релиза, проблем не возникало. MK>>Не-не-не, так дело не пойдёт. Есть конкретная задача, я её привел в теме, куда ведет ссылка. Прошу, выдайте мне решение. Я хочу удалить объекты из базы, просто по какому-то критерию. G>Не получится никак. Вернее совсем никак. Это противречит реализации Linq2SQL. Я готов мириться с такой вселенской несправедливостью, учитывая кучу других полезностей. G>Если вам нужны все возможности SQL, то используйте SQL, а не Linq.
Ну если бы в мире существовали только два способа работы с БД: Linq и SQL, то да, юзал бы SQL.
Но есть и третий путь
Здравствуйте, MxKazan, Вы писали:
G>>Если вам нужны все возможности SQL, то используйте SQL, а не Linq. MK>Ну если бы в мире существовали только два способа работы с БД: Linq и SQL, то да, юзал бы SQL. MK>Но есть и третий путь
Угу, написать свой Linq. Но вряд ли удастся добиться тойже функциональности, что Linq2SQL.
Некоторые проблемы, существующие в Linq вы можете решить, но получите кучу других проблем.
В вашем случае гораздо проще написать метод, генерирующий нужный SQL код по Query Expression.
Здравствуйте, Lloyd, Вы писали:
L>Здравствуйте, gandjustas, Вы писали:
G>>В вашем случае гораздо проще написать метод, генерирующий нужный SQL код по Query Expression.
L>Это разве проще?!! Это ж процентов 80 Linq2SQL-а.
а)это проще чем писать аналогичный фреймворк с нуля
б)это проще, чем переписывать все приложение на SQL
в)если нужен простой случай выборки в delete (без подзапросов), то это действительно просто
Здравствуйте, MxKazan, Вы писали:
G>>ЗЫ. Я подобное мнение видел у прожженых C++ников, которые впоследствие перешли на C#. MK>Можно расслабиться и спокойно общаться. Мой профессиональный опыт — 3 года сплошного C#. Никакого C++.
Вот и выросло новое поколение
SObjectizer: <микро>Агентно-ориентированное программирование на C++.