NHibernate不一致的sql列别名

时间:2012-02-20 09:25:30

标签: sql nhibernate fluent-nhibernate

当从NHibernate查看我们的查询时,很明显列别名不一致,当sql server执行计划由于列别名不一致而看到与不同查询相同的查询时性能问题。

一个例子可能是这样的:

SELECT this_.Id as Id44_0_ FROM dbo.[Foos] this_

SELECT this_.Id as Id43_0_ FROM dbo.[Foos] this_

我们有什么方法可以制作一致的列别名吗?

我们正在使用Fluent NHibernate和自动映射

2 个答案:

答案 0 :(得分:2)

可选择通过设置投影,您可以在查询中获取自定义名称作为别名,如下所示

Projections.Property("candidate.Name"), "CandidateName");

How to use NHibernate Projections to retrieve a collection

答案 1 :(得分:0)

在应用程序运行时,我从未见过相同的NH查询来生成不同的SQL。 我认为你不必为此担心性能。 (除非您需要经常启动和停止应用程序。)

使SQL查询始终保持一致(即使在数据模型更改后)所需的任何更改都是痛苦的,而不是绝对好的解决方案,我认为这对您来说是不可接受的。