【问题标题】:nHibernate default schema unused in formula公式中未使用的 nHibernate 默认模式
【发布时间】:2011-06-23 11:37:58
【问题描述】:

大家好,
我正在使用 nhibernate 2.2 并遇到了一个我似乎无法找到答案的问题。我的程序正在使用 hibernate.cfg.xml 文件中分配的默认模式,如下所示:
<property name="default_schema">MY_SCHEMA</property>
它适用于所有生成的 SQL 语句,但是我在公式中的语句也需要分配默认模式:
<property name="Count" type="int" formula="SELECT COUNT(*) FROM DETAILS WHERE DETAILS.ID = ID" />
MY_SCHEMA 变化比较频繁,所以我需要将 SQL 解释为<property name="Count" type="int" formula="SELECT COUNT(*) FROM MY_SCHEMA.DETAILS WHERE DETAILS.ID = ID" />
如果不使用硬编码模式,这是否可能?谢谢!

凯文

【问题讨论】:

标签: nhibernate schema properties formula


【解决方案1】:

您可以在构建会话工厂时动态更改映射。

当然,如果您使用基于代码的映射解决方案(例如 Fluent 或 ConfORM),这会更容易。

【讨论】:

  • 感谢您的及时回复!我了解您如何更改会话工厂内的映射,这就是我当前的 default_schema 定义的地方。我的问题是,由于公式不是“生成的 SQL”,nHibernate 没有将 default_schema 应用于不合格的表名,就像它对其他所有内容一样。有没有办法从配置文件中提取当前默认值,或者告诉 nHibernate 处理公式,因为它会生成 SQL?
  • 也许我的回答不够清楚。我的建议是您在创建配置时修改公式
  • 遗憾的是,我们仅限于使用基本的 xml 文件,并且无法动态进行配置。
  • 您仍然可以在内存中加载 XML 映射,查找公式,更改它,然后使用 Configuration.AddDocument(XmlDocument) 重载添加映射。有很多解决方案。我猜不出你的人为约束是什么。
  • 按照这些思路弄清楚了,它不会很优雅,但我不确定在我的限制范围内是否有完美的解决方案。感谢您的帮助!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-03-11
  • 2018-04-07
相关资源
最近更新 更多