14

モジュールをインストールし、移行してテーブルを作成した後、Orchard.sdfすべてのテーブルをクリアし、移行によって行われたすべての変更をロールバックしたいと考えています。

テーブルを削除しましたが、いくつかのメタデータを削除する必要があると思います。

モジュールのデータを完全に消去するにはどうすればよいですか? ありがとう。

4

3 に答える 3

5

それを行う適切な方法があるかどうかはわかりませんが、Orchard_Framework_DataMigrationRecordをクリーンアップするだけで十分です。datamigrationはこのテーブルをチェックして現在の機能バージョンを見つけます。すでにエントリがある場合は、再度有効にできない可能性があります。特徴。また、 Settings_ShellFeatureRecordSettings_ShellFeatureStateRecordSettings_ContentPartDefinitionRecord 、およびSettings_ContentTypeDefinitionRecordも確認してください。

最後に、他の表には多くの参照があるかもしれませんが、危険なことは何もないと思います。

于 2012-10-24T21:57:09.813 に答える
0

これは、テナントでテーブル プレフィックスを使用する場合にこれを簡単にする SQL クエリ スニペットです。

USE DatabaseName
DECLARE @moduleName varchar(255);
DECLARE @tableName varchar(255);
DECLARE @tablePrefix varchar(255);

SET @moduleName = '%Orchard.YourModule%';
SET @tablePrefix = 'YourTablePrefix';

SET @tableName = @tablePrefix + '_Orchard_Framework_ContentTypeRecord';
DECLARE @sql nvarchar(4000)
SELECT @sql = ' SELECT * ' +
              ' FROM dbo.' + quotename(@tableName) +
              ' WHERE Name LIKE @moduleName'
EXEC sp_executesql @sql, N'@moduleName varchar(255)', @moduleName;

SET @tableName = @tablePrefix + '_Settings_ContentTypeDefinitionRecord';
SELECT @sql = ' SELECT * ' +
              ' FROM dbo.' + quotename(@tableName) +
          ' WHERE Name LIKE @moduleName'
EXEC sp_executesql @sql, N'@moduleName varchar(255)', @moduleName;

SET @tableName = @tablePrefix + '_Settings_ContentPartDefinitionRecord';
SELECT @sql = ' SELECT * ' +
              ' FROM dbo.' + quotename(@tableName) +
          ' WHERE Name LIKE @moduleName'
EXEC sp_executesql @sql, N'@moduleName varchar(255)', @moduleName;

SET @tableName = @tablePrefix + '_Settings_ShellFeatureRecord';
SELECT @sql = ' SELECT * ' +
              ' FROM dbo.' + quotename(@tableName) +
              ' WHERE Name LIKE @moduleName'
EXEC sp_executesql @sql, N'@moduleName varchar(255)', @moduleName;

SET @tableName = @tablePrefix + '_Settings_ShellFeatureStateRecord';
SELECT @sql = ' SELECT * ' +
              ' FROM dbo.' + quotename(@tableName) +
              ' WHERE Name LIKE @moduleName'
EXEC sp_executesql @sql, N'@moduleName varchar(255)', @moduleName;

SET @tableName = @tablePrefix + '_Orchard_Framework_DataMigrationRecord';
SELECT @sql = ' SELECT * ' +
              ' FROM dbo.' + quotename(@tableName) +
              ' WHERE DataMigrationClass LIKE @moduleName'
EXEC sp_executesql @sql, N'@moduleName varchar(255)', @moduleName;
于 2016-03-22T15:01:46.340 に答える