Лучший подход для обработки параллелизма данных в 3-уровневом приложении - PullRequest
0 голосов
/ 30 ноября 2009

Каков наилучший подход для решения проблем параллелизма данных в трехуровневом приложении (WCF + LinqToSql или EF) с отсоединенными объектами или DTO?

Спасибо.

Ответы [ 3 ]

1 голос
/ 30 ноября 2009

Если вы не передаете все свои значения с помощью WCF, вы можете ввести в свою таблицу поле метки времени ( rowversion ). Это значение будет включено как собственность на вас и ваше DTO. Используя LINQ to SQL, у вас есть возможность использовать o оптимистическую проверку параллелизма , можно указать новое свойство временной метки вместо сравнения всех значений

0 голосов
/ 30 ноября 2009

Это встроено в LINQ to SQL и EF со свойством UpdateCheck атрибута Column. Мой вариант - использовать LINQ to SQL с отсоединенными сущностями POCO, если вы определенно хотите работать только с MS SQL SERVER и вам не требуется сложная база данных для сопоставлений сущностей.

В этом случае я бы использовал одно поле параллелизма в каждой из ваших таблиц и выполнял бы проверку параллелизма только для этого поля. Целочисленное поле хорошо и просто увеличивать его с каждым обновлением.

См. Здесь для управления параллелизмом с использованием LINQ to SQL.

Параллелизм с LINQ to SQL

Думал, это тоже будет удобно:

LINQ to SQL Обзор оптимистического параллелизма

P.S. Все это предполагает, что ваше решение будет хорошо с использованием оптимистичного параллелизма. Если вы находитесь на сервере с высокой нагрузкой, где данные сильно меняются, то может потребоваться более пессимистичное решение для параллелизма.

0 голосов
/ 30 ноября 2009

Включите все измененные значения в предложении where. Если никакие строки не обновляются, вы знаете, что ваши данные устарели, и вы можете сообщить об этом пользователю и спросить, какое действие предпринять.

...