在 Orchard CMS 中获取自定义 sql 查询的完整表名
Get full tablename for custom sql query in Orchard CMS
在 Orchard CMS 中,获取完整 table 名称的最佳方法是什么?我想执行自定义 SQL 查询(因此不使用 IRepository<T>
),但需要完整的 table 名称。我知道我可以使用 SchemaBuilder.TableDbName
但要创建 SchemaBuilder,我还需要一个 IDataMigrationInterpreter、featurePrefix 和 formatPrefix。我从哪里得到这些?我可以通过 Orchard 的依赖注入机制获得 IDataMigrationInterpreter,但是我知道我正在开发一个模块,所以我不能从哪里获得前缀。
租户的 table 前缀(如果有)在 injectable ShellSettings
对象中可用。紧随其后的 table 名称遵循简单规则,因此您可以 hard-code 那(因为这不是动态的,它仅取决于模块名称和记录名称)。
有关示例,请参阅 built-in 升级模块,例如Upgrade.Services.UpgradeService
和 Upgrade.Controllers.ContentPickerController
.
示例:
var tablePrefix = _shellSettings.DataTablePrefix;
var featurePrefix = "MyModule_MyFeature";
if (string.IsNullOrWhiteSpace(tablePrefix)) {
return $"{featurePrefix}_{type.Name}";
}
return $"{tablePrefix}_{featurePrefix}_{type.Name}";
在 Orchard CMS 中,获取完整 table 名称的最佳方法是什么?我想执行自定义 SQL 查询(因此不使用 IRepository<T>
),但需要完整的 table 名称。我知道我可以使用 SchemaBuilder.TableDbName
但要创建 SchemaBuilder,我还需要一个 IDataMigrationInterpreter、featurePrefix 和 formatPrefix。我从哪里得到这些?我可以通过 Orchard 的依赖注入机制获得 IDataMigrationInterpreter,但是我知道我正在开发一个模块,所以我不能从哪里获得前缀。
租户的 table 前缀(如果有)在 injectable ShellSettings
对象中可用。紧随其后的 table 名称遵循简单规则,因此您可以 hard-code 那(因为这不是动态的,它仅取决于模块名称和记录名称)。
有关示例,请参阅 built-in 升级模块,例如Upgrade.Services.UpgradeService
和 Upgrade.Controllers.ContentPickerController
.
示例:
var tablePrefix = _shellSettings.DataTablePrefix;
var featurePrefix = "MyModule_MyFeature";
if (string.IsNullOrWhiteSpace(tablePrefix)) {
return $"{featurePrefix}_{type.Name}";
}
return $"{tablePrefix}_{featurePrefix}_{type.Name}";