public IDataAdapterCommand <int> CreateUpdateMetadataCommand(IObjectId objectId, InstanceMetadata data)
        {
            IDbCommand insertCommand = CreateCommand( );
            var        instance      = objectId;


            insertCommand = CreateCommand( );

            insertCommand.CommandText = string.Format(@"
UPDATE {0} SET {2}=@{2}, {3}=@{3} WHERE {1}=@{1}

IF @@ROWCOUNT = 0
   INSERT INTO {0} ({2}, {3}) VALUES (@{2}, @{3})
",
                                                      StorageDbSchemaProvider.MetadataTable.TableName,
                                                      StorageDbSchemaProvider.MetadataTable.SopInstanceColumn,
                                                      StorageDbSchemaProvider.MetadataTable.MetadataColumn,
                                                      StorageDbSchemaProvider.MetadataTable.OwnerColumn);

            var sopParam   = CreateParameter("@" + StorageDbSchemaProvider.MetadataTable.SopInstanceColumn, instance.SOPInstanceUID);
            var metaParam  = CreateParameter("@" + StorageDbSchemaProvider.MetadataTable.MetadataColumn, data.ToJson( ));
            var ownerParam = CreateParameter("@" + StorageDbSchemaProvider.MetadataTable.OwnerColumn, data.Owner);

            insertCommand.Parameters.Add(sopParam);
            insertCommand.Parameters.Add(metaParam);
            insertCommand.Parameters.Add(ownerParam);

            SetConnectionIfNull(insertCommand);

            return(new ExecuteNonQueryCommand(insertCommand));
        }