我需要从预先存在的表中访问数据。我已经开始创建一个模块来显示数据等。但是,Orchard使用'Table_Prefix'和'Module Name'为表命令添加前缀。
有没有办法可以指定哪个表绑定模型,以便我可以使用现有的IRepository
我正试图避免修改核心代码,或者实现我自己的IRepository(我感觉这就是我将要做的事情。)
提前致谢。
答案 0 :(得分:1)
您可以通过三种方式更改核心代码来创建自定义表命名约定(以使其适合您当前的命名):
BuildRecord
方法中创建的
CompositionStrategy
课程
( Orchard.Framework / Environment / ShellBuilders / CompositionStrategy ),所以你可以在这里修改代码。 Apply
类的Orchard.Data.Conventions.RecordTableNameConvention
方法。这是记录表名称映射(内置于第1点)被推送到NHibernate的地方。FluentNHibernate.Conventions.IClassConvention
实施(类似于上面提到的RecordTableNameConvention
,并替换AutoMap
中Orchard.Data.Providers.AbstractDataServicesProvider
使用的默认实现CreatePersistenceModel(...)
方法。您也可以创建自己的IDataServicesProvider
实现,但如果您只需要更改表命名约定,那肯定会有点过分。
答案 1 :(得分:0)
我正在修改CompositionStrategy并发现你必须修改以下
<强> 1。 SetupService.cs(Modules \ Orchard.Setup \ Services):
在Setup方法中硬编码的表是 &#34; Orchard_Framework_DataMigrationRecord&#34;和 &#34; Settings_ShellDescriptorRecord&#34;
<强> 2。 InfosetController.cs(Modules \ Upgrade \ Controllers):
这个类中的多个表都是硬编码的,需要更新。
第3。 DataMigrationManager.cs(Data \ Migration):
将SchemaBuilder参数替换为构造函数。