Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / WCF, Web Services, Remoting [игнор отключен] [закрыт для гостей] / Подскажите как правильно синхронизировать данные в трехзвенке / 3 сообщений из 3, страница 1 из 1
07.06.2010, 13:44
    #36673032
Dmitry_Matveev
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите как правильно синхронизировать данные в трехзвенке
У меня классическое трехзвенное приложение:
Сервер БД (MSSQL), Сервер приложений(служба WCF), Клиент (WPF)
В службе реализованы контракты данных и операций для получения данных из БД.

Клиент различные контролы для управления данными, к примеру DataGrid'ы. Эти контролы сбиндены на ObservableCollection<T>, соответственно изменения в базу данных я вношу примерно таким образом:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
private void myCollection_CollectionChanged(object sender, NotifyCollectionChangedEventArgs e)
{
            // обновление базы данных
            var OldItems = new List<TypeT>();
            var NewItems = new List<TypeT>();
            if (e.OldItems!=null) foreach (var item in e.OldItems) OldItems.Add(item as TypeT);
            if (e.NewItems!=null) foreach (var item in e.NewItems) NewItems.Add(item as TypeT);
            App.CurrentApp.Proxy.UpdateTypeTTable(header, OldItems.ToArray(), NewItems.ToArray());
}
База данных обновляется в операции UpdateTypeTTable.
Проблема состоит в том что OldItems и NewItems не содержат ключей. Ключи они приобретают только при внесении в базу, но клиент об этом ничего не узнает. Получается что на клиенте остаются старые записи без Id, следовательно дальнейшая попытка изменения этих записей приведет к проблемам при синхронизации.
Как правильно поступить в этом случае? Перетягивать заново всю таблицу клиенту ИМХО глупо и нерационально, наверняка есть какое-то "правильное" решение.

Сорри если этот вопрос уже обсуждался, не нашел.
...
Рейтинг: 0 / 0
07.06.2010, 14:20
    #36673163
Roman S. Golubin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите как правильно синхронизировать данные в трехзвенке
Dmitry_Matveevнаверняка есть какое-то "правильное" решение.

Полностью в суть вопроса не вникал. Предположу, как вариант - генерация ключей типа guid ДО отправки на сервер SQL. А те ключи, которые генерятся в базе данных использовать только внутри базы данных при выборке данных - какой смысл их наружу светить?
...
Рейтинг: 0 / 0
07.06.2010, 16:01
    #36673554
Dmitry_Matveev
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите как правильно синхронизировать данные в трехзвенке
Для простоты. Если оперируешь одинаковыми объектами, не надо ничего преобразовывать, переопределять Equals и пр.
...
Рейтинг: 0 / 0
Форумы / WCF, Web Services, Remoting [игнор отключен] [закрыт для гостей] / Подскажите как правильно синхронизировать данные в трехзвенке / 3 сообщений из 3, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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