我已安装一个模块,进行迁移并在
我删除了这些表,但我认为应该删除一些元数据。
如何完全清除模块数据? 谢谢。
Orchard.sdf
中创建表后,我想清除所有表并回滚迁移所做的所有更改。我删除了这些表,但我认为应该删除一些元数据。
如何完全清除模块数据? 谢谢。
Orchard.sdf
中创建表后,我想清除所有表并回滚迁移所做的所有更改。完全卸载涉及删除与您模块名称、其功能名称和名称空间相关联的数据库表和行。以下是我们使用的过程。
1:运行 orchard.exe > package uninstall Orchard.Module.MyModuleName
2:然后打开 SQL Server Management Studio 并删除与您的模块相关联的以下数据库表。
MyModuleName_MyFeatureNameRecord
3:在以下表列中执行通配符搜索。务必搜索MyModuleName、MyNamespaceName、MyFeatureName等内容。最终您将删除所有这些行,但现在还不要删除。
SELECT * FROM Orchard_Framework_ContentTypeRecord WHERE Name LIKE '%%'
SELECT * FROM Settings_ContentTypeDefinitionRecord WHERE Name LIKE '%%'
SELECT * FROM Settings_ContentPartDefinitionRecord WHERE Name LIKE '%%'
SELECT * FROM Settings_ShellFeatureRecord WHERE Name LIKE '%%'
SELECT * FROM Settings_ShellFeatureStateRecord WHERE Name LIKE '%%'
SELECT * FROM Orchard_Framework_DataMigrationRecord WHERE DataMigrationClass LIKE '%%'
4:从以上搜索结果中,记录这些表格中行的Id值。
Orchard_Framework_ContentTypeRecord.Id
Settings_ContentTypeDefinitionRecord.Id
5:现在您已经记录了Id,请删除在步骤3中找到的行。
6:使用在步骤4中收集的Ids,从以下表中删除行。
SELECT * FROM Settings_ContentTypePartDefinitionRecord
WHERE ContentTypeDefinitionRecord_Id IN()
SELECT * FROM Orchard_Framework_ContentItemRecord
WHERE ContentType_id IN ()
这就是对我奏效的方法。
最后,其他表中可能有许多引用,但我认为没有危险。
如果您在租户中使用表前缀,这里有一个 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;