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

标签 asp.net asp.net-mvc nhibernate fluent-nhibernate orchardcms

我需要从预先存在的表中访问数据。我已经开始通过创建一个模块来显示数据等。但是,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 并用它替换 AutoMapOrchard.Data.Providers.AbstractDataServicesProviderCreatePersistenceModel(...) 方法中使用的默认值。

  • 您也可以创建自己的IDataServicesProvider实现,但是如果您只需要更改表命名约定,那肯定是大材小用。

    关于asp.net - 如何覆盖记录表命名以访问 Orchard CMS 中的现有数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7026355/

    相关文章:

    c# - 自动化任务的所有可能选项(在我的例子中,是搜索索引更新)

    asp.net-mvc - 如何在一个解决方案中的多个项目之间共享脚本?

    NHibernate HiLo - 所有实体的一张表

    asp.net-mvc - 如何在 ASP.NET MVC 中处理请求式数据库事务?

    c# - 通过代码映射的 NHibernate 和 SQLite 数据库 : saving many-to-one parent-child entities, 子项获取空外键

    nhibernate - Strict vs NonStrict NHibernate 缓存并发策略

    asp.net - MVC Valums Ajax Uploader - IE 不会在 request.InputStream 中发送流

    mysql - 在检查存在状态时将 DateTime 插入 mysql

    c# - 在页面编辑器中找不到 Sitecore 占位符键

    asp.net-mvc - 为什么 Controller 的名称中没有 "controller"?