powered by simpleCommunicator - 2.0.50     © 2025 Programmizd 02
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Применение автономной работы с бд на практике
25 сообщений из 330, страница 2 из 14
Применение автономной работы с бд на практике
    #38848245
faustmangos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
значит я беру в бд источнике налаживаю первичные ключи, внешние ключи и тд пишу всякие триггеры, представления а потом беру датасет заливаю из бд таблички и все по новой расставляю? а что если у меня при изменении записи в источнике бд срабатывает триггер и он чето выполняет над бд? как мне сделать тоже самое в датасете раз уж я отсоединенно работаю? написать тот же триггер в виде функции ползающей по дататейблам?
...
Рейтинг: 0 / 0
Применение автономной работы с бд на практике
    #38848250
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
faustmangos,

лучше делать не там и не тут, в середине, а там и тут сгенерировать :)
...
Рейтинг: 0 / 0
Применение автономной работы с бд на практике
    #38848253
faustmangos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ViPRos, спасибо профэссор, ваши ответы всегда бьют в цель моего незнания
...
Рейтинг: 0 / 0
Применение автономной работы с бд на практике
    #38848255
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
faustmangos,

ну че тут знать то? надо и Датасет и БД сгенерировать из концептуальной модели
...
Рейтинг: 0 / 0
Применение автономной работы с бд на практике
    #38848258
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
faustmangosзначит я беру в бд источнике налаживаю первичные ключи, внешние ключи и тд пишу всякие триггеры, представления а потом беру датасет заливаю из бд таблички и все по новой расставляю? а что если у меня при изменении записи в источнике бд срабатывает триггер и он чето выполняет над бд? как мне сделать тоже самое в датасете раз уж я отсоединенно работаю? написать тот же триггер в виде функции ползающей по дататейблам?Нет. Сказали же, DataSet != БД. В DataSet нужно хранить результаты запросов.

А лучше с DataSet вообще не связываться, лучше сразу использовать Entity Framework.
...
Рейтинг: 0 / 0
Применение автономной работы с бд на практике
    #38848259
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sphinx_mvАлексей КВ MSSQL можно подписаться на изменения в БД (см SqlDependency), но обычно этим не пользуются, особенно при большом количестве пользователей."Необходимо и достаточно" в MSSQL использовать timestamp/rowversion при любом количестве подписчиков.
Аналогично в Oracle - ORA_ROWSCN."тёплое" vs "мягкое"
...
Рейтинг: 0 / 0
Применение автономной работы с бд на практике
    #38848266
faustmangos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Алексей К, DataSet же не просто для хранения результатов запросов, а для последующей обработки этих результатов и запись измененных результатов в бд

значит выходит, что работать с DataSet можно так:
1) использовать точную копию бд, путем генерации концептуальной модели (с) Профэссор, и как я понимаю надо будет полностью скопировать логику базы данных в программу, а она может быть сложной, и тогда вопрос зачем вообще нужны все эти объекты типа процедур и триггеров в базе данных?
2) использовать часть бд, а если в бд сложная логика то надо будет постараться наладить связи между огрызком бд в проге с бд источником

и самый отстой - Вася залил бд в свой датасет удалил оттуда запись но из бд она еще не удалилась, т.к. он еще не обновлял ее данными из своего датасет, в это время Витя на другом проводе заливает бд с еще не удаленной записью в свой датасет и там ее видит, и тут Вася обновляю источник данными из датасета. Т.е. выходит у Вити запись осталась, а Васи меня удалилась? И тут Витя начинает работать с этой записью и изменяет эту запись в датасете, затем через какоето время он обновил источник своими данными. Что будет в базе данных в результате?
...
Рейтинг: 0 / 0
Применение автономной работы с бд на практике
    #38848267
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
faustmangos,

ну почитай про пессимизм, оптимизм при работе с данными
бд целиком в датасет обычно не надо, надо именно "огрызок", но целостный (подсхема называется), а не "результат запросов"
...
Рейтинг: 0 / 0
Применение автономной работы с бд на практике
    #38848272
faustmangos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
короче DataSet нужен для решения проблемы большого количества соединений, но решает он ее "по-свойму", тупым закачиванием все себе на комп, созданием там утопии работы с базы данных - свои отношения свои ключики, быстрый доступ к данным в памяти блаблабла, но стоп, что он решал? большое кол-во соединений? значит у нас 100 клиентов и каждый качнул себе парочку огрызков бд поработал с ним и слил обратно в бд а там что теперь кеся меся или как? либо каждому клиенту обновлять этот датасет каждый раз? тогда возвращаемся к тем же постоянным соединениям

единственный плюс который я вижу в datasete так это работа с xml
...
Рейтинг: 0 / 0
Применение автономной работы с бд на практике
    #38848281
petalvik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
faustmangos,

ну возьми вместо датасета любой ORM, тот же EF, представь работу с ним. Клиент запрашивает из БД данные, получает, например, несколько десятков объектов (что равноценно нескольким десяткам строк в datatable). Отображает эти объекты в UI. Человек, поработав с ними, обновляет БД. Но до этого другой клиент уже успел обновить эти же данные. Что получаем?

Меня всегда поражало, почему такие вопросы возникают в связи с dataset/datatable, но те же самые проблемы при работе с ORM или врукопашную (читаем через datareader, вручную маппим на объекты, потом пишем через datawriter) воспринимаются как само собой разумеющееся.
...
Рейтинг: 0 / 0
Применение автономной работы с бд на практике
    #38848287
sphinx_mv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей Кsphinx_mvпропущено...
"Необходимо и достаточно" в MSSQL использовать timestamp/rowversion при любом количестве подписчиков.
Аналогично в Oracle - ORA_ROWSCN."тёплое" vs "мягкое"Не теплое и не мягкое, а способ выделения и получения изменений из базы данных без плясок с бубнами. И будет это работать даже с оффлайн клиентами при любом их количестве (в отличие от).
А вообще - RTFM :
SqlDependency(бла-бла-бла)
Примечание SqlDependency предназначен для использования в приложениях ASP.NET или службах промежуточного уровня , когда относительно небольшое количество серверов имеют активные зависимости от базы данных. Этот объект не предназначен для использования в клиентских приложениях , где сотни и тысячи клиентских компьютеров могут поддерживать объекты SqlDependency, связанные с одним сервером базы данных.
...
Рейтинг: 0 / 0
Применение автономной работы с бд на практике
    #38848289
faustmangos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
petalvik, да ты прав, но дело в том, что datareader работает намного быстрее dataset и датасет эффективен если использовать его для того, чтобы он синхронизировал сразу по несколько измененных строк, т.е. надо дождаться пока не наберется какоето количество изменений, но тогда и начинаются проблемы с множественным доступом, а с помощью dbcommand можно апдейтнуть только 1 запись, хоть и придется потратится на соединение зато шанс что ты работаешь впустую и ктото просто потом своим датасетом перепишет твои данные уменьшается
...
Рейтинг: 0 / 0
Применение автономной работы с бд на практике
    #38848300
sphinx_mv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
faustmangosшанс что ты работаешь впустую и ктото просто потом своим датасетом перепишет твои данные уменьшаетсяВо-первых, использовать нужно DataAdapter (как где-то здесь ) и, во-вторых, оптимистическую блокировку
...
Рейтинг: 0 / 0
Применение автономной работы с бд на практике
    #38848317
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
faustmangospetalvik, да ты прав, но дело в том, что datareader работает намного быстрее dataset и датасет эффективен если использовать его для того, чтобы он синхронизировал сразу по несколько измененных строк, т.е. надо дождаться пока не наберется какоето количество изменений, но тогда и начинаются проблемы с множественным доступом, а с помощью dbcommand можно апдейтнуть только 1 запись, хоть и придется потратится на соединение зато шанс что ты работаешь впустую и ктото просто потом своим датасетом перепишет твои данные уменьшаетсяВы пишете свою первую программу? Может начать с реальных требований, а не фантазий?

Используйте DataAdapter, как уже предложили выше. Внутри него как раз таки datareader с dbcommand.

Что будет делать Ваш Вася, если у него интернет отвалится на пару часов? Магазин закроет на это время?
...
Рейтинг: 0 / 0
Применение автономной работы с бд на практике
    #38848322
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
faustmangosЗадачка - есть сеть магазинов в городе(1,2,3...) у них есть общий склад из которого они пополняют свои запасы и тд.
Один из вариантов решения задачи: общая БД, доступная online всем магазинам в городе (доступ через OData или Web API). Самый простой и надежный способ. Требуется хороший интернет канал, клиенты подключаются через Wi-Fi.
...
Рейтинг: 0 / 0
Применение автономной работы с бд на практике
    #38848430
faustmangos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
skyANAИспользуйте DataAdapter, как уже предложили выше. Внутри него как раз таки datareader с dbcommand.


кэп?

skyANAЧто будет делать Ваш Вася, если у него интернет отвалится на пару часов? Магазин закроет на это время?


мм, списывать памперсы которых нет уже на складе? Если инет отвалился значит со складом на это время работа закрыта, магазин то тут причем?
...
Рейтинг: 0 / 0
Применение автономной работы с бд на практике
    #38848438
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
faustmangosskyANAИспользуйте DataAdapter, как уже предложили выше. Внутри него как раз таки datareader с dbcommand.


кэп?

skyANAЧто будет делать Ваш Вася, если у него интернет отвалится на пару часов? Магазин закроет на это время?


мм, списывать памперсы которых нет уже на складе? Если инет отвалился значит со складом на это время работа закрыта, магазин то тут причем?То есть данные о продажам памперсов магазин заносит в другую базу?
...
Рейтинг: 0 / 0
Применение автономной работы с бд на практике
    #38848440
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
faustmangos, есть памперсы в магазине, есть памперсы на складе, но нет интернета.
Магазин в это время работает, с какими данными, откуда они читаются и куда пишутся?
...
Рейтинг: 0 / 0
Применение автономной работы с бд на практике
    #38848442
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANA,

да какаша у него пока в башке, ему уже все рассказали
...
Рейтинг: 0 / 0
Применение автономной работы с бд на практике
    #38848465
Фотография EDUARD SAPOTSKI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAИМХО с объектами в памяти проще и оптимальнее работать, чем с DataSet-ами.
Не всегда, хорошо когда четко можно классы объектов в модели определить.
А бывает что из трех таблиц нужно формировать 20 различных наборов данных и не известно, какой набор данных юзеру завтра еще понадобится.
Двадцать классов лепить и еще какие динамические классы придумывать не комильфо. Датасеты с таблицами в таких сучаях удобнее, хотя и тормознутее.
...
Рейтинг: 0 / 0
Применение автономной работы с бд на практике
    #38848469
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
EDUARD SAPOTSKIskyANAИМХО с объектами в памяти проще и оптимальнее работать, чем с DataSet-ами.
Не всегда, хорошо когда четко можно классы объектов в модели определить.
А бывает что из трех таблиц нужно формировать 20 различных наборов данных и не известно, какой набор данных юзеру завтра еще понадобится.
Двадцать классов лепить и еще какие динамические классы придумывать не комильфо. Датасеты с таблицами в таких сучаях удобнее, хотя и тормознутее.Шаблон спецификация, Query Object, CQRS, нет?
...
Рейтинг: 0 / 0
Применение автономной работы с бд на практике
    #38848474
Фотография EDUARD SAPOTSKI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAШаблон спецификация, Query Object, CQRS, нет?
Ага, но гемора не меньше чем с датасетами, а прозрачность кода просто ппц.
Ваще топик баян :(
...
Рейтинг: 0 / 0
Применение автономной работы с бд на практике
    #38848478
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
EDUARD SAPOTSKIskyANAШаблон спецификация, Query Object, CQRS, нет?
Ага, но гемора не меньше чем с датасетами, а прозрачность кода просто ппц.
Ваще топик баян :(Прозрачность кода? В каком плане?
...
Рейтинг: 0 / 0
Применение автономной работы с бд на практике
    #38848483
Фотография EDUARD SAPOTSKI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAВ каком плане?
Хрен разгребешь.
...
Рейтинг: 0 / 0
Применение автономной работы с бд на практике
    #38848497
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
EDUARD SAPOTSKIskyANAВ каком плане?
Хрен разгребешь.Да ладно, наоборот, см. картинку :)

Command and Query Responsibility Segregation (CQRS) на практике
...
Рейтинг: 0 / 0
25 сообщений из 330, страница 2 из 14
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Применение автономной работы с бд на практике
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]