public function update($entity)
{
//load entity provider
$provider = $this->prepareProvider($entity);
$definition = $provider->getDefinition();
//disallow differing entities
return $this->checkEntity($definition->getEntity())->createGateway($definition->getTableName())->update($definition->getPrimaryKeyName(), $provider->extract(), $definition->getFields());
}