我刚刚从2.0升级到NHibernate 2.1并且没有更改我的架构现在我收到错误:
Column 'Reserved Word' does not belong to table ReservedWords.
在尝试时.OpenSession().
我可以添加属性:
<property name="hbm2ddl.keywords">none</property>
Run Code Online (Sandbox Code Playgroud)
到hibernate.cfg.xml文件,"修复"错误.
但是,了解为什么升级时出现此错误以及如何解决此问题会很有帮助.
摘自http://fabiomaulo.blogspot.com/2009/06/auto-quote-tablecolumn-names.html
NHibernate 添加了自动引用表名和列名的功能,这些名称是所选数据库的保留字。
例如,如果您有一个具有“Order”属性的类,如果您尝试执行: SELECT Order FROM MyTable ,那么大多数数据库将无法解析查询。在 MSSQL 中,您必须执行 SELECT [Order] FROM MyTable 才能使其正常工作(因此需要引用字段)。
一般来说,在 NHibernate 中,您可以使用“反引号”来引用字段 - 即。在您的映射中指定 Order 列,这样Order您就可以使用名为 Order 的列。
NHibernate中的改变使得需要引用的字段可以被自动引用,这样你就不需要手动添加引号了。
取自该 url,例如映射:
<class name="Order">
<id type="int">
<generator class="native"/>
</id>
<property name="Select"/>
<property name="From"/>
<property name="And"/>
<property name="Column"/>
<property name="Name"/>
</class>
Run Code Online (Sandbox Code Playgroud)
无需引用任何表名或列名即可工作
| 归档时间: |
|
| 查看次数: |
1542 次 |
| 最近记录: |