我已经开始使用NHibernate 3.0和PostgreSQL进行一个小型项目,到目前为止,由于NHibernate网站已关闭,这个过程有点粗糙,我相信这个答案在他们的网站的某处。使用NHibernate和PostgreSQL引用列名称
我有了这两列(当然还有更多的真正的表)的数据库:
int ID
String Feature
现在我使用的是FluentNHibernate做映射,是这样的:
public class MyEntityMap: ClassMap<MyEntity>
{
public MyEntityMap()
{
Id(x => x.ID);
Map(x => x.Feature);
}
}
和LINQ查询走出数据
var strucs = from str in session.Query<MyEntity>()
where str.ID < 5
select str;
查询将产生正确的SQL语句,很好。问题是,因为我在我的列名大写字母,你必须包起来引号,但生成的SQL代码看起来是这样的:
SELECT this_.ID as ID0_0_, this_.feature as feature0_0_,
FROM "MyEntity" this_ WHERE this_.ID < 5
凡列没有他们周围的报价。如果我运行这个,我得到一个“列this_.id”未找到等
有谁知道我可以如何让NHibernate的列名包装在引号?
编辑:因为有一个第三方程序必须全部大写一些列我不能小写列名。
我尝试添加.ExposeConfiguration(CFG => cfg.SetProperty(“hbm2ddl.keywords”,“自动报价”),但它似乎并没有做任何事情。
hmm它会在'public override IDataBaseSchema GetDataBaseSchema(DbConnection connection)''抛出一个错误',因为'PostgreSQLDialect' doesn'我不知道为什么没有人为PostgreSQL实现这个方法 – 2010-08-01 23:24:41
感谢您在正确的方向上的点,我 – 2010-08-02 00:03:09
@Nathan,你可以分享解决方案吗? – 2011-04-04 13:36:01