Re[15]: Давайте поговорим о c# 3.0
От: Lloyd Россия  
Дата: 21.09.08 13:18
Оценка:
Здравствуйте, gandjustas, Вы писали:

G>>>В вашем случае гораздо проще написать метод, генерирующий нужный SQL код по Query Expression.


L>>Это разве проще?!! Это ж процентов 80 Linq2SQL-а.

G>а)это проще чем писать аналогичный фреймворк с нуля

Про какой фреймворк речь — про linq2sql или про тот, что будет по expression tree генерить соответствующий sql

G>б)это проще, чем переписывать все приложение на SQL


Гм. А кто-то предлагал переписать все на sql? Да и не факт что переписать на sql будет сложнее, зависит от размера приложения.

G>в)если нужен простой случай выборки в delete (без подзапросов), то это действительно просто


Посмотри вверх по ветке, с чего началалась речь про delete. Там как раз речь шла про подзапрос, да еще и с агрегатами.
... << RSDN@Home 1.2.0 alpha 4 rev. 1111>>
Re[8]: Давайте поговорим о c# 3.0
От: IT Россия linq2db.com
Дата: 21.09.08 17:16
Оценка:
Здравствуйте, MxKazan, Вы писали:

IT>>1. Типизацию работы с данными БД.

MK>Ну в этом Linq далеко не первый.

В некотором смысле первый. Дело в том, что преобразованием имени класса в имя поля теперь занимается сам компилятор. Ранее это был ручной или генерируемый код.

MK> При этом в нём и гемора хватает, см. про удаление
Автор: MxKazan
Дата: 21.09.08
. Мне также, например, не понравилось отсутствие того, что в ADO Entity Framework называют концептуальным слоем. Насколько я понимаю, Linq-to-Sql настраивается на модель БД при помощи атрибутов, следовательно, например, при изменении имени поля, мне приходится заниматься перегенерацией классов и перекопиляцией.


А что по-твоему есть типизация?

MK>Я уже и молчу про то, что куча настроек теряется при перегенерации (например, касательно участия поля в update'ах)


С какой стати?

IT>>2. linq 2 objects принципиально изменил способы обработки данных в памяти.

MK>Так. Я видимо не в теме. А что принципиального нового linq 2 objects внёс по части "способы обработки данных в памяти"?

Linq 2 Objects внёс декларативность. Т.е. теперь я пишу что я хочу получить, а не как. В результате вместо кучи циклов с перебором списков и словарей у меня декларативная конструкция.

IT>>3. Возможность работать в функциональном стиле с человеческим лицом.

MK>Честно говоря, никогда не страдал от отсутствия подобного в C#

Ты и не будешь страдать. Ты же не страдаешь из-за того, что не можешь видеть в инфракрасном диапазоне. Ты этого не умеешь, обходишься без такого умения и не страдаешь. Так же и здесь.
Неясность изложения обычно происходит от путаницы в мыслях.
Если нам не помогут, то мы тоже никого не пощадим.
Re[2]: Давайте поговорим о c# 3.0
От: Roman Odaisky Украина  
Дата: 21.09.08 19:46
Оценка:
Здравствуйте, Хэлкар, Вы писали:

Х>Этюды nikov'a — это все же очень глубококопание — 90% разработчиков не знает ответов на большинство из них и живет себе припеваючи. В спек заглядывать не обязательно — программировать вполне можно прочитав например Троелсена (так сказать спек в разжеванном виде).


Во-первых, не издевайтесь над Трёльсеном (не знаю, хорошо ли он пишет, но всё равно нечего перевирать имя).

Во-вторых, все известные мне языки, которые пытались устранить низкоуровневые «сложности» и объединить сущности «объект» и «адрес объекта», наступили на одни и те же грабли и связывают объекты вместо копирования или наоборот неочевидным для программиста образом. Чем больше будет распространен C#, тем больше анонимов будут задавать одни и те же вопросы на соответствующих форумах. Да что далеко ходить: самое верхнее сообщение на rsdn.dotnet под модным номером 3110110
Автор:
Дата: 19.09.08
: «А теперь вопрос — почему при удалении строк из dt также удаляются строки из ViewState? Догадываюсь, что копируется ссылка, а как правильно скопировать, чтобы создалась копия объекта?». Тем более, что грабли замедленного действия: программа компилируется и работает, но тихо редактирует не те данные.

В-третьих, пока C# привязан к одной определенной платформе, он годится только на то, чтобы флудить о нем в ФП, а на сервер пойдут решения, которые при нужде можно будет перенести куда понадобится :-)
До последнего не верил в пирамиду Лебедева.
Re[9]: давайте конкретнее
От: Roman Odaisky Украина  
Дата: 21.09.08 20:00
Оценка:
Здравствуйте, WolfHound, Вы писали:

WH>>>Не о том речь. Почитай правила поиска имен :maniac: стандарт писали садомазохисты.

КЛ>>ничего особенного
WH>Это ADL то ничего особенного?

ADL как раз не особенно сложен, а с концепциями C++09 его сделают вообще простым и красивым.

Проблемы вызывает двухфазный поиск имен, что еще и осложняется традиционной неподдержкой его компиляторами, которые мы не станем здесь называть, наподобие MSVC. Частый вопрос в rsdn.cpp: «почему class A<T>: X<T> { A() { f(); } } не работает, а this->f() работает?».
До последнего не верил в пирамиду Лебедева.
Re[3]: Давайте поговорим о c# 3.0
От: Хэлкар  
Дата: 21.09.08 20:12
Оценка:
Здравствуйте, Roman Odaisky, Вы писали:

RO>Во-первых, не издевайтесь над Трёльсеном (не знаю, хорошо ли он пишет, но всё равно нечего перевирать имя).


Эндрю Троелсен (Andrew Troelsen) — стандартная трнскрипция. Откуда ваш вариант?

RO>Во-вторых, все известные мне языки, которые пытались устранить низкоуровневые «сложности» и объединить сущности «объект» и «адрес объекта», наступили на одни и те же грабли и связывают объекты вместо копирования или наоборот неочевидным для программиста образом. Чем больше будет распространен C#, тем больше анонимов будут задавать одни и те же вопросы на соответствующих форумах. Да что далеко ходить: самое верхнее сообщение на rsdn.dotnet под модным номером 3110110
Автор:
Дата: 19.09.08
: «А теперь вопрос — почему при удалении строк из dt также удаляются строки из ViewState? Догадываюсь, что копируется ссылка, а как правильно скопировать, чтобы создалась копия объекта?». Тем более, что грабли замедленного действия: программа компилируется и работает, но тихо редактирует не те данные.



RO>В-третьих, пока C# привязан к одной определенной платформе, он годится только на то, чтобы флудить о нем в ФП, а на сервер пойдут решения, которые при нужде можно будет перенести куда понадобится

Re[9]: Давайте поговорим о c# 3.0
От: MxKazan Португалия  
Дата: 21.09.08 20:46
Оценка:
Здравствуйте, IT, Вы писали:

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


IT>>>1. Типизацию работы с данными БД.

MK>>Ну в этом Linq далеко не первый.

IT>В некотором смысле первый. Дело в том, что преобразованием имени класса в имя поля теперь занимается сам компилятор. Ранее это был ручной или генерируемый код.

А какая в сущности разница?

MK>> При этом в нём и гемора хватает, см. про удаление
Автор: MxKazan
Дата: 21.09.08
. Мне также, например, не понравилось отсутствие того, что в ADO Entity Framework называют концептуальным слоем. Насколько я понимаю, Linq-to-Sql настраивается на модель БД при помощи атрибутов, следовательно, например, при изменении имени поля, мне приходится заниматься перегенерацией классов и перекопиляцией.


IT>А что по-твоему есть типизация?


Намёк ясен. Но он не совсем применим к Linq-To-Sql, уж слишком специфично, я написал чего не хватает. Видно и Microsoft это понимает, потому и есть Entity Framework. А проблема с DELETE похоже не имеет простого решения.

MK>>Я уже и молчу про то, что куча настроек теряется при перегенерации (например, касательно участия поля в update'ах)


IT>С какой стати?


Ну вот, например, мне хотелось обновлять объекты в БД так, чтобы генерируемый Sql запрос не проверял изменение остальных полей (имеется ввиду concurrency). Приходилось ручками проставлять почти всем полям класса UpdateCheck в Never. Поменял поле, перегенерил класс и опять давай проставлять. Справедливости ради скажу, это скорее следует отнести к недостаткам Студии.

IT>>>2. linq 2 objects принципиально изменил способы обработки данных в памяти.

MK>>Так. Я видимо не в теме. А что принципиального нового linq 2 objects внёс по части "способы обработки данных в памяти"?

IT>Linq 2 Objects внёс декларативность. Т.е. теперь я пишу что я хочу получить, а не как. В результате вместо кучи циклов с перебором списков и словарей у меня декларативная конструкция.

Это понятно, про ФП я читал. Но не очень понятно в чем конкретная новизна по памяти? Речь о локальности данных? Но вообще, IT, я бы хотел еще раз обозначить, что я принципе не против Linq. Хотелось бы просто понимать реальную необходимость этого, реальные плюсы, а не просто как "игрушка для этюдов". Разве это есть гуд, требовать "что", не понимая "как"?
Re[10]: Давайте поговорим о c# 3.0
От: Lloyd Россия  
Дата: 21.09.08 21:00
Оценка:
Здравствуйте, MxKazan, Вы писали:

MK>Ну вот, например, мне хотелось обновлять объекты в БД так, чтобы генерируемый Sql запрос не проверял изменение остальных полей (имеется ввиду concurrency). Приходилось ручками проставлять почти всем полям класса UpdateCheck в Never. Поменял поле, перегенерил класс и опять давай проставлять. Справедливости ради скажу, это скорее следует отнести к недостаткам Студии.


Не совсем понятно, что ты имеешь в виду под "перегенерил класс".
Класс генерится при любом изменении в dbml-е (при сохранении), но тогда получается, что update check поменять пообще невозможно, ведь после изменеиния update check-а класс снова будет перегенерен и его снова нужно будет выставлять.
... << RSDN@Home 1.2.0 alpha 4 rev. 1111>>
Re[11]: Давайте поговорим о c# 3.0
От: MxKazan Португалия  
Дата: 21.09.08 21:03
Оценка:
Здравствуйте, Lloyd, Вы писали:

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


MK>>Ну вот, например, мне хотелось обновлять объекты в БД так, чтобы генерируемый Sql запрос не проверял изменение остальных полей (имеется ввиду concurrency). Приходилось ручками проставлять почти всем полям класса UpdateCheck в Never. Поменял поле, перегенерил класс и опять давай проставлять. Справедливости ради скажу, это скорее следует отнести к недостаткам Студии.


L>Не совсем понятно, что ты имеешь в виду под "перегенерил класс".

L>Класс генерится при любом изменении в dbml-е (при сохранении), но тогда получается, что update check поменять пообще невозможно, ведь после изменеиния update check-а класс снова будет перегенерен и его снова нужно будет выставлять.
Ыыыы... Это я имел ввиду, генерацию класса дизайнером, когда взял ручками и перетащил из Server Explorer'а
Это всё уже реализация, это можно изъять из обсуждения.
Re[12]: Давайте поговорим о c# 3.0
От: Lloyd Россия  
Дата: 21.09.08 21:06
Оценка:
Здравствуйте, MxKazan, Вы писали:

L>>Класс генерится при любом изменении в dbml-е (при сохранении), но тогда получается, что update check поменять пообще невозможно, ведь после изменеиния update check-а класс снова будет перегенерен и его снова нужно будет выставлять.

MK>Ыыыы... Это я имел ввиду, генерацию класса дизайнером, когда взял ручками и перетащил из Server Explorer'а
MK>Это всё уже реализация, это можно изъять из обсуждения.

А нефик тащить из сервер-эксплорера, он для добавления новых объектов. Хочешь обновлять — обновляй руками.
... << RSDN@Home 1.2.0 alpha 4 rev. 1111>>
Re[11]: Давайте поговорим о c# 3.0
От: MxKazan Португалия  
Дата: 21.09.08 21:10
Оценка:
Здравствуйте, eao197, Вы писали:

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


G>>>ЗЫ. Я подобное мнение видел у прожженых C++ников, которые впоследствие перешли на C#.

MK>>Можно расслабиться и спокойно общаться. Мой профессиональный опыт — 3 года сплошного C#. Никакого C++.

E>Вот и выросло новое поколение

Отсутствие продакшн-опыта на нативном языке не означает непонимание основных принципов и неумение программировать на нём. До этого было гораздо больше времени, проведённого с Делфи, где и указатели пройдены и WinApi поюзано немало и много еще чего. И на C# общение, например, с MAPI бывало, с маршалиногом managed в unmanaged. Такое вот оно новое поколение, не стесняется
Re[13]: Давайте поговорим о c# 3.0
От: MxKazan Португалия  
Дата: 21.09.08 21:14
Оценка:
Здравствуйте, Lloyd, Вы писали:

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


L>>>Класс генерится при любом изменении в dbml-е (при сохранении), но тогда получается, что update check поменять пообще невозможно, ведь после изменеиния update check-а класс снова будет перегенерен и его снова нужно будет выставлять.

MK>>Ыыыы... Это я имел ввиду, генерацию класса дизайнером, когда взял ручками и перетащил из Server Explorer'а
MK>>Это всё уже реализация, это можно изъять из обсуждения.

L>А нефик тащить из сервер-эксплорера, он для добавления новых объектов. Хочешь обновлять — обновляй руками.


Дык он там генерит массу всего! Боюсь, что поправив ручками, что нибудь да пропущу
Re[14]: Давайте поговорим о c# 3.0
От: Lloyd Россия  
Дата: 21.09.08 21:25
Оценка:
Здравствуйте, MxKazan, Вы писали:

L>>А нефик тащить из сервер-эксплорера, он для добавления новых объектов. Хочешь обновлять — обновляй руками.


MK>Дык он там генерит массу всего! Боюсь, что поправив ручками, что нибудь да пропущу


Под обновлять ручками я имел в виду, не изменение исходников, которые генерит кастом тул, а изменение объектов в диаграме, там настроек уже не так много.
... << RSDN@Home 1.2.0 alpha 4 rev. 1111>>
Re[9]: Давайте поговорим о c# 3.0
От: Sinclair Россия https://github.com/evilguest/
Дата: 22.09.08 03:29
Оценка:
Здравствуйте, gandjustas, Вы писали:

G>Если такие запросы выполнять, то Identity Tracking совсем работать не будет.

Не вижу связи.
... << RSDN@Home 1.2.0 alpha rev. 677>>
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[16]: Давайте поговорим о c# 3.0
От: gandjustas Россия http://blog.gandjustas.ru/
Дата: 22.09.08 04:35
Оценка:
Здравствуйте, Lloyd, Вы писали:

L>Посмотри вверх по ветке, с чего началалась речь про delete. Там как раз речь шла про подзапрос, да еще и с агрегатами.

А можно ли использовать все возможности запросов в операторе delete?
Я c TSQL плохо знаком, по стандарту SQL-92 возможности фильтрации в delete сильно ограничены.
Может оказаться что на уровне генерации sql по Expression такая проблема не решается вообще.
Re[17]: Давайте поговорим о c# 3.0
От: Sinclair Россия https://github.com/evilguest/
Дата: 22.09.08 05:10
Оценка:
Здравствуйте, gandjustas, Вы писали:
G>А можно ли использовать все возможности запросов в операторе delete?
Да. Всю мощь SQL.
G>Я c TSQL плохо знаком, по стандарту SQL-92 возможности фильтрации в delete сильно ограничены.

G>Может оказаться что на уровне генерации sql по Expression такая проблема не решается вообще.

Очевидно, решается. Если можно сделать select, то можно и delete.
Аналогичная задача возникает у нас и при попытке воспользоваться insert into ... select ().
... << RSDN@Home 1.2.0 alpha rev. 677>>
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[18]: Давайте поговорим о c# 3.0
От: gandjustas Россия http://blog.gandjustas.ru/
Дата: 22.09.08 05:58
Оценка: +1
Здравствуйте, Sinclair, Вы писали:

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

G>>А можно ли использовать все возможности запросов в операторе delete?
S>Да. Всю мощь SQL.
Да уж, надо изучать T-SQL.

G>>Может оказаться что на уровне генерации sql по Expression такая проблема не решается вообще.

S>Очевидно, решается. Если можно сделать select, то можно и delete.
S>Аналогичная задача возникает у нас и при попытке воспользоваться insert into ... select ().
А еще update есть...
Re[9]: Давайте поговорим о c# 3.0
От: FR  
Дата: 22.09.08 06:14
Оценка: :)
Здравствуйте, gandjustas, Вы писали:

G>ЗЫ. Я подобное мнение видел у прожженых C++ников, которые впоследствие перешли на C#.


Не это точно не прожженые плюсисты, это обычные дезертиры. Прожженые плюсиситы очень любят такие штуки
Re[17]: Давайте поговорим о c# 3.0
От: Lloyd Россия  
Дата: 22.09.08 07:18
Оценка:
Здравствуйте, gandjustas, Вы писали:

L>>Посмотри вверх по ветке, с чего началалась речь про delete. Там как раз речь шла про подзапрос, да еще и с агрегатами.

G>А можно ли использовать все возможности запросов в операторе delete?
G>Я c TSQL плохо знаком, по стандарту SQL-92 возможности фильтрации в delete сильно ограничены.

Да особо сложных возможностей и не надо. Достаточно
DELETE FROM tbl WHERE pk IN (тут-любой-запрос)

G>Может оказаться что на уровне генерации sql по Expression такая проблема не решается вообще.


Это еще почему? По моему вполне решается, только вот сложность решения = равна сложности генерации select-оа по expression-ам = ~80%-ов Linq2Sql-я.
... << RSDN@Home 1.2.0 alpha 4 rev. 1111>>
Re[4]: Troelsen
От: Roman Odaisky Украина  
Дата: 22.09.08 08:20
Оценка:
Здравствуйте, Хэлкар, Вы писали:

RO>>Во-первых, не издевайтесь над Трёльсеном (не знаю, хорошо ли он пишет, но всё равно нечего перевирать имя).

Х>Эндрю Троелсен (Andrew Troelsen) — стандартная трнскрипция.

Ну да, а автора «Фауста» зовут Гоетхе.



Фамилия у него, насколько я понимаю, датского происхождения (Trølsen). Так его сначала и переводили, а потом, когда он стал писать на тему новомодного .NET, издательства бросились в спешке переводить и не осилили даже фамилию. Их же (переводчиков) мы должны благодарить за «перегруженные функции», «.NET программирование» и т. п.

Как бы то ни было, «Troelsen» ни при каких обстоятельствах не произносится ни как «Тройелсен», ни как «Троэлсен». Ты же сам употребил слово «транскрипция», хотя «Троелсен» — это транслитерация, а не транскрипция. Почему «Эндрю», а не «Андрев»?
До последнего не верил в пирамиду Лебедева.
Re[5]: Troelsen
От: Lloyd Россия  
Дата: 22.09.08 08:23
Оценка:
Здравствуйте, Roman Odaisky, Вы писали:

RO>Их же (переводчиков) мы должны благодарить за «перегруженные функции», «.NET программирование» и т. п.


А что не так с перегруженными функциями?
... << RSDN@Home 1.2.0 alpha 4 rev. 1111>>
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.