public void SaveDownloadedChanges(byte[] serverBlob, IEnumerable<SqlCeOfflineEntity> entities)
{
using (GetSqlCeConnection())
{
SqlCeTransaction transaction = _connection.BeginTransaction();
try
{
foreach (var entity in entities)
{
if (entity.ServiceMetadata.IsTombstone)
{
// Call delete command
var deleteMethod = _deleteCommands[entity.GetType()];
deleteMethod(entity);
}
else
{
// Call insert/update command
var getMethod = _getCommands[entity.GetType()];
if (getMethod(entity))
{
var updateMethod = _updateCommands[entity.GetType()];
updateMethod(entity);
}
else
{
var insertMethod = _insertCommands[entity.GetType()];
insertMethod(entity);
}
}
}
SaveAnchor(serverBlob);
transaction.Commit();
}
catch
{
transaction.Rollback();
throw;
}
}
}