|
|
|
Как передать DataRow в другую форму/Dataset для редактирования
|
|||
|---|---|---|---|
|
#18+
Долгое время писал на Delphi, а сейчас подумываю перейти на C#. Понимание приходит, но с трудом - слишком разные технологии доступа к данным. Разбираюсь с тестовой базой Northwind . Мастер мне сделал типизированный Dataset (NorthwindDataSet), содержащий 2 таблицы: Orders и [Order Details] , связанные внешним ключом. В приложение добавил 2 формы: frmOrders, отображающую только список заказов, и frmCard - для добавления/редактирования заказа. В каждой форме есть экземпляр NorthwindDataset. Карточку открываю по нажатию одной из кнопок и передаю ей соотв. заказ: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. Вариантов видится 3: 1. Передавать в карточку только OrderID и выбирать заказ по-новой, а после редактирования обновлять реестр; 2. Передавать в карточку ссылку на нужную DataRow (как делаю сейчас) + ссылку на DataSet из реестра. В этом DataSet-е выбирать содержимое заказа, а при закрытии чистить его; 3. Не использовать внешний ключ в карточке и обрабатывать каскадные изменения вручную. Может в C# делается совсем по-другому? Поделитесь сокровенными знаниями. PS: Ни Linq, ни EF, мне пока не интересны. ----- С уважением ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.03.2010, 16:30 |
|
||
|
Как передать DataRow в другую форму/Dataset для редактирования
|
|||
|---|---|---|---|
|
#18+
eugenehr Даже не заморачивайтесь с типизированными датасетами - сломаете мозг от этого г... ((тем более Вы только начинаете изучать .NET)) P.S. Смотрите в сторону ORM: Entity Framework, Linq to SQL, NHibernate ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.03.2010, 16:33 |
|
||
|
Как передать DataRow в другую форму/Dataset для редактирования
|
|||
|---|---|---|---|
|
#18+
МСУСмотрите в сторону ORM До этого мне пока далеко. Да и для полноты картины с Dataset-ами разобраться все же хочется. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.03.2010, 16:43 |
|
||
|
Как передать DataRow в другую форму/Dataset для редактирования
|
|||
|---|---|---|---|
|
#18+
Вообще вопрос у вас скорее не о DataSet'ах, а об архитектуре приложения. Может вам лучше для начала об многоуровневой архитектуре почитать что-нибудь, чтобы не смешивать UI и код доступа к данным и не привыкать к плохому. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.03.2010, 17:22 |
|
||
|
Как передать DataRow в другую форму/Dataset для редактирования
|
|||
|---|---|---|---|
|
#18+
curiousManМожет вам лучше для начала об многоуровневой архитектуре почитать что-нибудь, чтобы не смешивать UI и код доступа к данным и не привыкать к плохому. Т-tier architecture тут не при чём. Топиккастер может вполне себе работать с двухзвенкой и не заморачиваться. Двуххвенка - это не "плохое", это - архитектура. Если Вы имели ввиду разделение на слои UI и DAL - то типизированные датасеты вполне себе могут содержаться в DAL и они будут обвязаны по классам. P.S. Я не нахожу содержательным Ваш ответ, который еще более путает топиккастера. eugenehrМСУСмотрите в сторону ORM До этого мне пока далеко. Да и для полноты картины с Dataset-ами разобраться все же хочется. Не так страшен чёрт, как его малюют. Почитайте форум, посмотрите что люди спрашивали. За день-два у Вас всё более или менее уляжется в голове, главное желание. P.S. А с типизированными датасета завязывайте, серьезно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.03.2010, 17:28 |
|
||
|
Как передать DataRow в другую форму/Dataset для редактирования
|
|||
|---|---|---|---|
|
#18+
А если по существу, то держать отдельный экземпляр DataSet в каждой форме не нужно. Контекст данных же у вас один, вот один и используйте. Если хочется держать данные в форме, то способов масса - передать ссылку на экземпляр DataSet в конструкторе, запихать его в синглтон, внедрять зависимость и т.д. Правильность зависит только от задачи, которую решаешь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.03.2010, 17:33 |
|
||
|
Как передать DataRow в другую форму/Dataset для редактирования
|
|||
|---|---|---|---|
|
#18+
curiousManА если по существу, то держать отдельный экземпляр DataSet в каждой форме не нужно. Контекст данных же у вас один, вот один и используйте. Если хочется держать данные в форме, то способов масса - передать ссылку на экземпляр DataSet в конструкторе, запихать его в синглтон, внедрять зависимость и т.д. Правильность зависит только от задачи, которую решаешь. однозначно +1 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.03.2010, 18:02 |
|
||
|
Как передать DataRow в другую форму/Dataset для редактирования
|
|||
|---|---|---|---|
|
#18+
curiousMan...многоуровневой архитектуре...запихать его в синглтон, внедрять зависимость и т.д....Возможно я неправильно задал вопрос. Возможно пытаюсь перетащить курсоры Delphi на C#. Не знаю. Что я делаю в Delphi (чаще всего). Во-первых минимизировать лишние обращения к БД (специфика наших проектов). Во-вторых - писать по-меньше подверженного ошибками кода. Тот же Northwind, но на Delphi. 1. Форма "Реестр заказов". Один источник данных, содержащий только заказы. Кнопки "Создать" и "Открыть". Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. PS: Знаю, что программисты на Delphi не любят писать ручками. Но чем меньше кода, тем меньше и ошибок. Мне так всегда казалось. PPS: curiousMan, МСУ. Если я правильно понял, то нужно передавать в карточку ссылку на DataSet из реестра. В карточке, в этом DataSet-е, заполнять подчиненную таблицу, а при выходе чистить ее? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.03.2010, 18:18 |
|
||
|
Как передать DataRow в другую форму/Dataset для редактирования
|
|||
|---|---|---|---|
|
#18+
eugenehrЕсли я правильно понял, то нужно передавать в карточку ссылку на DataSet из реестра. Как вариант, да. eugenehrВ карточке, в этом DataSet-е, заполнять подчиненную таблицу, а при выходе чистить ее? В каком смысле чистить? В плане очистки ресурсов, что-ли? Ничего чистить не нужно, Garbage Collector сам с этим справится. P.S. Я рекомендую Вам сначала прочитать книжку (литература обсуждается постоянно на форуме WinForms, .Net Framework), а не бросаться на амбразуру. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.03.2010, 10:15 |
|
||
|
Как передать DataRow в другую форму/Dataset для редактирования
|
|||
|---|---|---|---|
|
#18+
МСУВ каком смысле чистить? В плане очистки ресурсов, что-ли? Ничего чистить не нужно, Garbage Collector сам с этим справится.В том смысле, что при выходе из карточки и подтверждения изменений в БД, содержимое заказа больше не нужно. Если не чистить эту таблицу и последовательно открыть десяток заказов, то их количество будет довольно большим и бесполезно занимать память. МСУЯ рекомендую Вам сначала прочитать книжку (литература обсуждается постоянно на форуме WinForms, .Net Framework), а не бросаться на амбразуру.Этим и занимаюсь. Беда в том, что книги описывают ADO.NET отдельно от WinForms и наоборот. Толковых книг/примеров, где были бы эти 2 сущности вместе, найти пока не удалось. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.03.2010, 13:08 |
|
||
|
Как передать DataRow в другую форму/Dataset для редактирования
|
|||
|---|---|---|---|
|
#18+
eugenehrМСУВ каком смысле чистить? В плане очистки ресурсов, что-ли? Ничего чистить не нужно, Garbage Collector сам с этим справится.В том смысле, что при выходе из карточки и подтверждения изменений в БД, содержимое заказа больше не нужно. Если не чистить эту таблицу и последовательно открыть десяток заказов, то их количество будет довольно большим и бесполезно занимать память. Этим и занимаюсь. Беда в том, что книги описывают ADO.NET отдельно от WinForms и наоборот. Толковых книг/примеров, где были бы эти 2 сущности вместе, найти пока не удалось. Посмотри Self-Paced Training Kit MCTS 70-505 Windows Forms Application Development - там даются стандартные сценарии, причем расписанные по шагам. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.03.2010, 13:28 |
|
||
|
Как передать DataRow в другую форму/Dataset для редактирования
|
|||
|---|---|---|---|
|
#18+
curiousManПосмотри Self-Paced Training Kit MCTS 70-505 Windows Forms Application Development - там даются стандартные сценарии, причем расписанные по шагам.Спасибо, буду искать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.03.2010, 13:32 |
|
||
|
|

start [/forum/topic.php?fid=17&msg=36526947&tid=1351405]: |
0ms |
get settings: |
9ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
148ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
58ms |
get tp. blocked users: |
2ms |
| others: | 220ms |
| total: | 471ms |

| 0 / 0 |
