如何覆盖记录表命名以访问Orchard CMS中的现有数据



我需要访问预先存在的表中的数据。我已经开始创建一个模块来显示数据等。然而,Orchard在表命令前面加了"table_Prefix"one_answers"module Name"。

有没有任何方法可以指定绑定模型的表,这样我就可以使用现有的IRepository

我正在努力避免修改核心代码,或者实现我自己的IRepository(我有一种感觉,这就是我必须做的。(

提前谢谢。

您可以通过以下三种方式更改核心代码来创建自定义表命名约定(以便它适合您当前的命名(:

  1. 记录名称映射是在的BuildRecord方法中创建的CompositionStrategy类(Orchard.Framework/Environment/ShellBuilders/ComponentsStrategy(,因此您可以在此处简单地修改代码
  2. 通过更改Orchard.Data.Conventions.RecordTableNameConvention类的Apply方法。这就是将记录表名称映射(在第1点中构建(推送到NHibernate的地方
  3. 创建您自己的FluentNHibernate.Conventions.IClassConvention实现(类似于上面提到的RecordTableNameConvention,并用它替换Orchard.Data.Providers.AbstractDataServicesProviderCreatePersistenceModel(...)方法中AutoMap使用的默认实现

您也可以创建自己的IDataServicesProvider实现,但如果您只需要更改表命名约定,那么这肯定是一种过分的做法。

我正在修改CompositionStrategy,发现您必须修改以下

1.SetupService.cs(Modules\Orchard.Setup\Services(:

Setup方法中硬编码的表格如下"Orchard_Framework_DataMigrationRecord"one_answers"SettingsShellDescriptorRecord">

2.InfosetController.cs(模块\升级\控制器(:

此类中有多个表被硬编码,需要更新。

3.DataMigrationManager.cs(数据\迁移(:

将SchemaBuilder参数替换为构造函数。

最新更新