我需要从预先存在的表中访问数据。我已经开始通过创建一个模块来显示数据等。但是,Orchard 使用“Table_Prefix”和“模块名称”作为表命令的前缀。
有什么办法可以指定绑定(bind)模型的表,这样我就可以使用现有的IRepository
我试图避免修改核心代码,或者实现我自己的 IRepository(我有一种感觉是我必须要做的。)
提前致谢。
最佳答案
您可以通过三种方式更改核心代码来创建自定义表命名约定(使其适合您当前的命名):
BuildRecord
的方法CompositionStrategy
类(class)(Orchard.Framework/Environment/ShellBuilders/CompositionStrategy),所以你可以简单地在这里修改代码。
Apply
Orchard.Data.Conventions.RecordTableNameConvention
的方法类(class)。这是记录表名称映射(在第 1 点中内置)被推送到 NHibernate 的地方。 FluentNHibernate.Conventions.IClassConvention
实现 (类似于上面提到的 RecordTableNameConvention
并用它替换 AutoMap
在 Orchard.Data.Providers.AbstractDataServicesProvider
的 CreatePersistenceModel(...)
方法中使用的默认值。您也可以创建自己的
IDataServicesProvider
实现,但是如果您只需要更改表命名约定,那肯定是大材小用。
关于asp.net - 如何覆盖记录表命名以访问 Orchard CMS 中的现有数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7026355/