gpt4 book ai didi

c# - 使用 NHibernate 和 PostgreSQL 引用列名

转载 作者:太空狗 更新时间:2023-10-29 17:50:02 25 4
gpt4 key购买 nike

我已经开始在一个小项目中使用 NHibernate 3.0 和 PostgreSQL,到目前为止,由于 NHibernate 网站出现故障,我的旅程有点艰难,我确信这个答案在他们网站的某个地方。

我有一个数据库有这两列(当然真实表中还有更多):

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

列周围没有引号。如果我运行它,我会得到一个“column this_.id” is not found 等等。

有谁知道如何让 NHibernate 将列名括在引号中?

编辑:我不能将列名称小写,因为第三方程序需要将某些列全部大写。

我尝试添加 .ExposeConfiguration(cfg => cfg.SetProperty("hbm2ddl.keywords","auto-quote") 但它似乎没有做任何事情。

最佳答案

我意识到这是一个相当古老的问题,但对于其他可能会在这里结束的问题,您还可以实现自定义命名策略,在设置 session 工厂时您将添加:

Fluently.Configure(new Configuration()
.SetNamingStrategy(new CustomNamingStrategy()))...

在 CustomNamingStrategy 中,实现 NHibernate.Cfg.INamingStrategy 接口(interface),对于所有方法,基本上只返回带有引号的参数。

关于c# - 使用 NHibernate 和 PostgreSQL 引用列名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3332312/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com