Deutsch
Germany.ruФорумы → Архив Досок→ Программирование

.Net - вправьте, плс, мне мозги...

1759  1 2 3 4 5 6 все
Murr коренной житель10.03.08 21:10
Murr
NEW 10.03.08 21:10 
Вообщем отдохнул Я... весьма неплохо... теперь пора возвращаться к работе...
И так имеем:
Среда - Studio 2005 (FW 2.0) + MS SQL 2005
Требуется элементарное - сформировать запись и воткнуть ее в базу.
Читаем доку - для операций с данными рекомендуется нечто под названием DataSet.
Ну раз рекомендуется - пользуем. Берем дизайнер, строим простейший однотабличный
типизированный DataSet. Дизайнер попутно создает еще несколько файликов/класов
(мне они, в принципе, не интересны по причине их автогенерации, но будем помнить
что они есть).
Читаем доку дальше.
Поскольку табличка в DataSet'е есть, построим для нее адаптер с командами для Select,
Insert, Update и Delete. Опять никаких проблем все построено, класс сгенерен.
Читаем доку дальше.
Каждый DataSet имеет метод AcceptChanges(). Метод предназначен для фиксации изменений
в DataSet'е. Вроде все сделано и понятно...
Теперь пишем элементарный код - объект, создает DataSet, манипулирует имеющейся в
нем табличкой и добавляет (как это делается описывать не буду - на такие мелочи как
сначала получить запись из таблицы, потом ее же обратно добавить - вы и сами знаете)
туда запись. Потом вызывается AcceptChanges() и... как вы догадываетесь изменения не
сохраняются в базе...
Ладушки, роем доку дальше... Оказывается, что для сейвинга требуется SqlDataAdapter с командами.
Но, блин, Я же их задал создав *DataSetTableAdapters!!! Приходится лезть в сгенерированные
файлики и смотреть что же там есть... Как ни странно - там есть все что надо... С одним НО -
все что надо находится в одельном классе, который еще обернут отдельным Namespace'ом и
который, естественно, надо создавать и использовать...
Загрузка - аналогично, созданием инстансов двух различных классов.
Еще раз обращаю внимание - создавался типизированный DataSet... В соотвествии с моими
представлениями об типизации и ООП - должен был уметь save/load куда указано, в частности на
MS SQL... Изменений, чтобы это именно так и работало - 3-5 строк...
Вообщем - прочистите мне мозги - что-то Я совсем запарился с биллиными поделками... :(
#1 
AlexNek старожил10.03.08 22:40
AlexNek
NEW 10.03.08 22:40 
в ответ Murr 10.03.08 21:10
А я только думал написать. Сейчас прийдет Мурр и тебе все вправит
Ну захотел человек больше слоев, что бы универсальней было. Но что-то я проблем не припомню. Кстати, сгенирированные классы таблиц довольно удобны и там много разной нужной фигни есть.
#2 
Murr коренной житель10.03.08 22:56
Murr
NEW 10.03.08 22:56 
в ответ AlexNek 10.03.08 22:40
Кстати, сгенирированные классы таблиц довольно удобны и там много разной нужной фигни есть.
------
Угу... правда _элементарного_ - нету... Ну что стоило слепить DataAdapter, подпихнуть
его в DataSet как IO-процессор по умолчанию и дать возможность его поменять? На элементарном
уровне - интерфейсик унаследовали, имплементировали и присвоили... и все идет куда задано...
Так нет, блин, надо наплодить кучу классов, в которых надо разбираться и помнить где, когда и
какой пользовать... Ггггррррр....
Ну и новая прибабаха - берем тот же DataSet, добавляем одну запись, сохраняем... ура, имеем
единичку в качестве ключика!!! Удаляем запись из таблицы, повторяем процесс... Последовательность
в базе как и положено идет в перед и дает - 2, а DataSet бодро рапортует - 1... При этом код,
в сгенерированном SQL и классе вполне приличный - должен возвращать 2... только он не
вызывается - вызывается какой-то базовый метод... Ггггррррр....
Блин, как Я давно не возился с поделками билли... Вот в Борланде почти всегда было совпадение
ожидаемого с фактическим... даже в доки можно было не лазить...
#3 
  scorpi_ скептик10.03.08 23:02
NEW 10.03.08 23:02 
в ответ Murr 10.03.08 21:10
Возьми NHibernate, и не майся известно чем.
#4 
Murr коренной житель10.03.08 23:30
Murr
NEW 10.03.08 23:30 
в ответ scorpi_ 10.03.08 23:02
Разве это прочистит мне мозги? : )
#5 
  scorpi_ скептик11.03.08 12:20
11.03.08 12:20 
в ответ Murr 10.03.08 23:30, Последний раз изменено 11.03.08 15:20 (scorpi_)
Если не прочистит, то остаётся только сеппуку.
#6 
AlexNek старожил11.03.08 18:16
AlexNek
NEW 11.03.08 18:16 
в ответ Murr 10.03.08 22:56
В ответ на:
Угу... правда _элементарного_ - нету

Много чего нету что хочется, на то он и дядя Билли. Они делают как ИМ нужно и удобно. В отличии от Борланда, который на мой взляд делает больше для пользователй.
Да та же концепция "визуальной" разработки программ была раньше Борландом сделана, неизвесто где еще был бы НЕТ если бы они не сманили главного архитектора из борланда.
С дргой стороны на Билла русгаешся до тех пор пока что-то совсем другое не попробуешь.
#7 
AlexOtt завсегдатай11.03.08 19:15
AlexOtt
NEW 11.03.08 19:15 
в ответ AlexNek 11.03.08 18:16
Одна из самых (на мой взгляд) удобных концепций визуальной разработки была сделана в Sybase Power++, который они правда забросили после версии 2.5. В россии эта среда была малоизвестна, хотя в свое время они еще производили и Sybase PowerJ, примерно с теми же возможностями. Ну и конечно потом, большая часть наработок ушла в PowerBuilder
#8 
  scorpi_ скептик11.03.08 19:34
NEW 11.03.08 19:34 
в ответ AlexNek 11.03.08 18:16
В ответ на:
Они делают как ИМ нужно и удобно. В отличии от Борланда, который на мой взляд делает больше для пользователй.

Долго смеялся. Борланд делает для чайников. Dixi.
#9 
AlexNek старожил11.03.08 20:41
AlexNek
NEW 11.03.08 20:41 
в ответ AlexOtt 11.03.08 19:15
Никогда не видел. А можно немного подробней рассказать если не ломит.
#10 
AlexNek старожил11.03.08 21:03
AlexNek
NEW 11.03.08 21:03 
в ответ scorpi_ 11.03.08 19:34
Ну да, нахрен профи с пропертями возится когда можно код написать.
Давай возьмем студию от мелкофта - не "НЕТ". Скажи-ка сколько потребуется времени для написания простого диалога, скажем с вводом текста, вводом даты из календаря или вручную и парой радиобатонов. Да, еще хочу, чтобы при изменении размера диалога мои элементы также изменяли размер. Еще мог бы захотеть что-бы все мои остальные диалоги были зависимы от базового - визуально, то есть при изменении расположения кнопочек в базовом, во всех остальных все изменилось автоматом. Но хрен с ним, о наследовании ресурсов я еще не слыхал.
#11 
AlexOtt завсегдатай11.03.08 21:06
AlexOtt
NEW 11.03.08 21:06 
в ответ AlexNek 11.03.08 20:41
в поставке был достаточно богатый набор готовых контролов, включая контролы для работы с БД, удобная интеграция с ActiveX и т.п.
был еще совершенно безумный контрол для отчетов, графиков и т.п. на основе данных из БД (он был заимствован из PowerBuilder)
P.S. многие продукты Sybase почему-то незаслуженно замалчиваются - например, PowerDesigner - замечательное средство для моделирования баз данных (логическое и физическое моделирование, поддержка кучи БД, включая open source, реверс-инженеринг, прямая работа с БД и т.п.), а также для UML-моделирования, включая генерацию кода на С++
#12 
AlexOtt завсегдатай11.03.08 21:07
AlexOtt
NEW 11.03.08 21:07 
в ответ AlexNek 11.03.08 20:41
да, забыл упомянуть, что Power++ в девичестве называлась Watcom Optima C++
#13 
AlexNek старожил11.03.08 21:22
AlexNek
NEW 11.03.08 21:22 
в ответ AlexOtt 11.03.08 21:06
Так ты про концепт говорил, а в итоге тебе просто библиотека и контролы понравились.
А для разработки баз мне до сих пор Erwin нравится, был нескзанно удивлен, когда на каждом углу стали появлятся плакаты с этим названием. Оказалось у будушего мэра была такая же фамилия.
#14 
AlexOtt завсегдатай11.03.08 21:35
AlexOtt
NEW 11.03.08 21:35 
в ответ AlexNek 11.03.08 21:22
да, про концепт я-то и не написал :-)
основное преимущество для быстрой разработки заключалось в том, что он, в отличии от делфи, не пихал в пользовательский код автосгенеренные вещи - объявления контролов, диспатчинг функций и т.п. Пользователю для реализации оставалось опредеелние хэндлеров для тех или иных событий. Насколько я помню, у них сразу не было проблем с масштабированием окон и т.п. вещей. Несмотря на то, что оно на первый взгляд казалось пригодным только к типовым интерфейсам, можно было легко разработать свои контролы, сделать готовые библиотеки диалогов и т.п. вещей, и все это выносилось на панели инструментов...
P.S. правда в следующем году уже можно будет отмечать 10-ю годовщину прекращения проекта :-(
#15 
AlexNek старожил11.03.08 21:58
AlexNek
NEW 11.03.08 21:58 
в ответ AlexOtt 11.03.08 21:35, Последний раз изменено 11.03.08 21:59 (AlexNek)
Концепт правда не совсем понял, но видимо те же свойства объектов.
Осталось только понять почему тогда такой проект умер.
Тот же Кларион вроде еще жив.
#16 
Murr коренной житель12.03.08 02:58
Murr
NEW 12.03.08 02:58 
в ответ scorpi_ 11.03.08 19:34
Долго смеялся. Борланд делает для чайников. Dixi.
------
Ты сможешь объяснить чайнику как сделать заданную форму в другой среде?
Только так, чтобы он действительно понял с первого раза и мог сделать...
Об Борланде Я знаю, что смогу... И даже знаю сколько времени займет "научить"
расставлять контролы по форме... об бизнес-логике, базах и сложных рассчетах
не говорим - там не всегда и профи тянут...
Я вот до сих пор не разобрался, почему следующий код
INSERT INTO [dbo].[Tree] ([Parent]) VALUES (3);
SELECT SCOPE_IDENTITY() as IDs
дает правильный результат в SQL Studio, дает правильный результат в эксплорере
Studio'05 и выдает бред при выполнении через ADO... Точнее - почему - знаю,
как обойти - знаю, но вот на кой оно так сделано - не знаю... А ведь именно такой
код генерится в .NET как рабочий...
#17 
Murr коренной житель12.03.08 03:04
Murr
NEW 12.03.08 03:04 
в ответ AlexNek 11.03.08 18:16
С дргой стороны на Билла русгаешся до тех пор пока что-то совсем другое не попробуешь.
-------
Я вроде другого пробовал достаточно и разного. Но ругаюсь - в основном на билли.
И, собственно, ругаюсь потому, что не делает "правильно" даже там, где затраты на
"сделать правильно" меньше "сделать как было"... т.е. ситуация не выправляется...
#18 
AlexOtt завсегдатай12.03.08 10:40
AlexOtt
NEW 12.03.08 10:40 
в ответ AlexNek 11.03.08 21:58
ну PowerBuilder у них до сих пор жив и продается.
я думаю, что проект умер по причине смерти ваткома
#19 
AlexNek старожил13.03.08 00:26
AlexNek
NEW 13.03.08 00:26 
в ответ Murr 12.03.08 03:04
В ответ на:
Я вроде другого пробовал достаточно и разного. Но ругаюсь - в основном на билли.

Может ты что-то не то пробовал
У меня Hawk IDE вылетал на каждом ребилде, надо было раз 10 перезапускать пока пройдет нормально, а билла можно было ставить в ночь на ребилд и не боятся. Если он и вылетает то стабильно, по конкретной ошибке.
В ответ на:
И, собственно, ругаюсь потому, что не делает "правильно"

Ты просто вникни в его психологию. Он все делает "правильно" .... для себя.
#20 
1 2 3 4 5 6 все