Первичный ключ на локальном TClientDataSet с использованием модели портфеля - PullRequest
0 голосов
/ 28 ноября 2011

Когда клиентское приложение DataSnap подключается к удаленному модулю данных сервера DataSnap и использует TDataSetProvider + TClientDataSet, оно кэширует таблицу (или представление) базы данных, локальную для клиентского приложения. Пользователь может вносить изменения в данные в TClientDataSet локально и ApplyUpdates(0) для синхронизации изменений с сервером. Это все имеет смысл.

При использовании базы данных SQL Server 2008 первичный ключ может быть полем identity или GUID. Предполагая, что пользователь будет в автономном режиме при добавлении новых записей в локальный TClientDataSet, как локальные TDataSetProvider и TClientDataSet обрабатывают назначение поля первичного ключа, когда пользователь создает новая запись? Поскольку локально созданные записи могут быть частью отношения мастер / подробности, кажется логичным, что новый первичный ключ потребует для локального создания. Как это решается, когда пользователь выполняет ApplyUpdates (0)?

Когда несколько пользователей создают записи в режиме офлайн , как разрешаются коллизии первичных ключей, когда каждый из них выполняет ApplyUpdates(0)?

Поле identity лучше, чем поле GUID, или наоборот? Почему?

1 Ответ

0 голосов
/ 29 ноября 2011

Это может быть ближайший ответ:

Как использовать поля AutoInc с DataSnap

У кого-нибудь есть лучшее предложение?

...