![]() |
|
Модераторы: gambit |
![]()
|
|
| dazy |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 344 Регистрация: 15.9.2006 Репутация: нет Всего: 8 |
На клиенте загружаю данные с сервера, все проходит хорошо и гладко
Но надо периодически обновлять данные. Если я делаю _context.LoadWords(); еще раз, то новые данные добавляются к старым. Т.е. происходит не рефреш а добавление. _context.Words = null; - так делать не позволяет: readonly. Приходиться еще раз делать новый контекст, и загружать данные, то же самое что показано в коде выше. Есть какой нить способ грамотного обновления данных на клиенте? Чтобы текущие данные похерились, а новые загрузились? |
|||
|
||||
| Idsa |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2086 Регистрация: 5.12.2006 Где: Томск Репутация: 15 Всего: 62 |
dazy, прочитайте начало моей 5-й статьи по EF. Если не ошибаюсь, это именно то, что Вам нужно.
|
|||
|
||||
| dazy |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 344 Регистрация: 15.9.2006 Репутация: нет Всего: 8 |
Статья хорошая, но я, наверное, не совсем ее понял.
Попробовал поработать с MergeOption, но к сожалению результат тот же самый. Данные добавляются, не рефрешатся.
Тут надо сказать, что вопрос больше из области RIA а именно DomainContext нежели EF, как мне кажется. К примеру в статье используется System.Data.Services.Client.MergeOption на сколько я понял, у меня же на клиенте доступны только System.Windows.Ria.Data.MergeOption. Ну и они соответственно различны. |
|||
|
||||
| Idsa |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2086 Регистрация: 5.12.2006 Где: Томск Репутация: 15 Всего: 62 |
dazy, нужно просто подключить сборку System.Data.Entity - тогда появится MergeOption из System.Data.Objects.
|
|||
|
||||
| dazy |
|
||||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 344 Регистрация: 15.9.2006 Репутация: нет Всего: 8 |
Не, не догоняю.
Сборку эту я подключить могу, но она не принимается методом. Вот дефолтный лоадер
А вот, что он в результате вызывает.
Дело происходит на клиенте, может я не прав, но клиент же вообще про EF, как бы ни чего не знает, потому как на клиенте используются только вот такие сборки :
|
||||||
|
|||||||
| Idsa |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2086 Регистрация: 5.12.2006 Где: Томск Репутация: 15 Всего: 62 |
LoadWords - это самописный метод?
Это не подключенные сборки, а подключенные пространства имен. Если сборки, реализующей EF-specific классы, на клиенте нет, ее просто нужно подключить, и ничего страшного в этом нет. Это сообщение отредактировал(а) Idsa - 2.6.2009, 21:22 |
|||
|
||||
| dazy |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 344 Регистрация: 15.9.2006 Репутация: нет Всего: 8 |
Это часть прокси класса, который автоматически генерит студия на клиенте, для доступа к серверу, на основании DomainService который в свою очередь находится на сервере. Т.е. если даже что-то поменять в LoadWords, то студия его сгенерирует по новой перед компиляцией. |
|||
|
||||
| Idsa |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2086 Регистрация: 5.12.2006 Где: Томск Репутация: 15 Всего: 62 |
RIA значит... Понятия не имею, как эта технология работает. Она сама выполняет запросы к EF? Есть хотя бы теоретическая возможность подобраться к EF запросам и выполнять их с нужным MergeOption?
А что делает тот MergeOption, который принимает LoadWords? Если документации нет, можно в Reflector'е посмотреть. |
|||
|
||||
| dazy |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 344 Регистрация: 15.9.2006 Репутация: нет Всего: 8 |
Да примерно тоже самое что и в EF. Есть OverwriteCurrentValues, KeepCurrentValues и KeepChanges. И они похоже работают. Но у меня специфическая задача, я получаю несколько случайных значений из базы, а потом их надо заменить другими случайными значениями. Написано, что для рефреша, надо использовать KeepChanges. Но он именно для меня не подходит, потому что он все же не обнуляет коллекцию. Ну да ладно, это не сверх задача, в принципе можно для обнуления коллекции переопределять контекст.
А вообще RIA довольно интересная штука. Позволяет через http получать доступ к источнику данных. По сути тот же rest, но типизированный на клиенте. Очень просто. Создаешь на сервере DomainService, указываешь источник данных, и на клиенте, который должен быть в том же солюшене генерится прокси для доступа к этим данным. Соответсвенно те типы данных которые есть на сервере становятся доступными на клиенте. Тот же rest, только вся обработка запросов, их десереализация и т.п. делается силами RIA. Ну и там всякие прелести типа требований безопасности для доступа, или можно указать на сервере валидацию конкретного поля, и она же появится и на клиенте. Очень удобно когда сильверлайту нужно с базой данных работать. Тут обзор. |
||||
|
|||||
![]()
|
| Прежде чем создать тему, посмотрите сюда: | |
|
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, stab, mr.DUDA, Exception. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Базы данных под .NET | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |