|
VFP -> C#. SQL View -> TableAdapter
|
|||
---|---|---|---|
#18+
Пытаюсь познакомиться с C# 2010. В форме есть метода. В первом методе, используемом при загрузке формы, если пользовательские настройки отсутствуют - формируется новая запись. Update проходит без ошибок. Во втором методе, используемом при закрытии формы, пользовательская запись уже существует, она (запись) только модифицируется. Ошибка при попытке выполнить Update во втором методе: «Для обновления требуется действительный UpdateCommand при передаче коллекции DataRow с измененными строками». Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60.
Первый вопрос (не могу удержаться от смеха): значит вносить новую запись без описания Update можно, а если потрогали уже имевшуюся – нальзя? Ну, может быть, меня от глупости так прет …. Вопрос второй, для меня куда более значим. Смотрел «Мастер настройки запроса TableAdapter». Увидел там примечание: «Создание инструкции INSERT, UPDATE или DELETE не заменяет собой команды адаптера таблицы, используемые при вызове его метода Update. Например, при выборе UPDATE в качестве типа запроса создается новый запрос с именем, которое задается на более позднем шаге в мастере. Для выполнения данного запроса вы вызываете этот именованный метод адаптера таблицы. Вызов метода Updateадаптера таблицы выполняет инструкции, созданные при первоначальной настройке адаптера таблицы». А на хрена мне тогда такой адаптер? Чего собственно хочется. В VFP я использовал SQL View. На первых порах SQL View создавался в дизайнере. Позднее, была использована процедура генерации текста SQL View по описанию модуля (справочника, журнала и т.п.). Важно не это. Важно, что всего один раз был описан SQL View. А во всех формах использовался метод сохранения со строкой: Begin Transaction lResult = Tableupdate(.T.,.T., Thisform.viewheader) … В C# 2010 стоило подключить базу – автоматически сформировались адаптеры для каждой таблицы. Посмотрел опеределения – роман. Текст SQL View записулькой теперь представляется. Может, я тороплюсь, может терпения не хватает? Неужели нет средств для исчерпывающего описания связей полей источника и полей представления, что апдейтить, а чего нет. Чтобы далее использовать лишь имя представления. Неужели нельзя написать пользовательский адаптер? Тогда, правда, опять хочется спросить, вот эта куча мусора в окне классов зачем? Извините, если слишком эмоционально. Ткните носом в нужное направление. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.07.2016, 16:08 |
|
VFP -> C#. SQL View -> TableAdapter
|
|||
---|---|---|---|
#18+
Корректор, Все пока не дочитал. Не могу удержаться от смеха. Вы думаете, что Adapter заменяет SqlDataAdapter? Вы действительно думает, что если вы не создали SqlDataAdapter.UpdateCommand у Вас что-то будет обновлятся? И что если бы Вы даже выполнили предыдущие пункты, что нибудь обновилось в Корректор Код: c# 1. 2.
без Код: c# 1. 2. 3.
Продолжайте смеятся, а не доки читать ... |
|||
:
Нравится:
Не нравится:
|
|||
29.07.2016, 19:33 |
|
VFP -> C#. SQL View -> TableAdapter
|
|||
---|---|---|---|
#18+
Корректор«Создание инструкции INSERT, UPDATE или DELETE не заменяет собой команды адаптера таблицы, используемые при вызове его метода Update. Например, при выборе UPDATE в качестве типа запроса создается новый запрос с именем, которое задается на более позднем шаге в мастере. Для выполнения данного запроса вы вызываете этот именованный метод адаптера таблицы. Вызов метода Updateадаптера таблицы выполняет инструкции, созданные при первоначальной настройке адаптера таблицы». Что-то Вы не там и не то читали, наверное. Ссылочку дайте ... |
|||
:
Нравится:
Не нравится:
|
|||
29.07.2016, 19:38 |
|
VFP -> C#. SQL View -> TableAdapter
|
|||
---|---|---|---|
#18+
КорректорВ C# 2010 стоило подключить базу – автоматически сформировались адаптеры для каждой таблицы. Посмотрел опеределения – роман. Текст SQL View записулькой теперь представляется. Может, я тороплюсь, может терпения не хватает? Неужели нет средств для исчерпывающего описания связей полей источника и полей представления, что апдейтить, а чего нет. Чтобы далее использовать лишь имя представления. Неужели нельзя написать пользовательский адаптер? Тогда, правда, опять хочется спросить, вот эта куча мусора в окне классов зачем? Автоматически сформированные адаптеры можно вполне себе перестроить, задав там свои запросы или хранимые процедуры. Можно и пользовательский адаптер сделать. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.07.2016, 19:43 |
|
VFP -> C#. SQL View -> TableAdapter
|
|||
---|---|---|---|
#18+
Microsoft позиционирует три основных метода работы с данными для свзяки C# .NET MS SQL Server - connected (я использую в основном его), disconnected (Вы изучаете его) и для начинающих был создан EF (Entity framework). При работе с disconnected approach все Ваши таблицы обязательно должны иметь Primry Key. Это поле как раз и используется для нахождения записи которая будет обновляться. Так как Вы не определили команды Update во втором случае слкдует сделать это автоматически: Код: c# 1. 2.
Два замечания - SQL select command должна быть общей. SqlCommandBuilder автоматически генерирует команды INSERT, UPDATE или DELETE (при наличии Primary Key в Вашей таблице). Примерно так. P.S. Я перестал использовать disconnect приём для работы с данными довольно, так как я предопчитаю полный контроль над данными + работв только с SP. Как следствие - быстрота разработки даже простых приложений довольно высокая, намного легче исправлять ошибки и оптимизировать работу с данными особенно для высоконагруженых систем... Аналогичный способ работы с данными я использовал и в связке VFP + Oracle (connected). Good luck! ... |
|||
:
Нравится:
Не нравится:
|
|||
02.08.2016, 10:59 |
|
|
start [/forum/topic.php?fid=20&msg=39282933&tid=1400427]: |
0ms |
get settings: |
12ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
56ms |
get topic data: |
14ms |
get forum data: |
3ms |
get page messages: |
56ms |
get tp. blocked users: |
2ms |
others: | 19ms |
total: | 184ms |
0 / 0 |