我在映射文件中使用以下公式:
使用(nolock)从表SI中选择前1个SI.ID,其中SI.GUID = GUID和SI.IsArchive ='0'
生成的sql是:
使用(this_.nolock)从表SI中选择前1个SI.ID,其中SI.GUID = this_.GUID和SI.IsArchive ='0'
nolock是一个关键字。我不希望它具有this _。(template关键字)的资格。
我该如何改变这种行为?
最佳答案
您可以尝试将公式逻辑重构为用户定义的函数(假设此处是sql server),然后直接从公式中调用它。您甚至可以通过使用数据库对象映射使函数成为模式生成的一部分。
例如:
CREATE FUNCTION [dbo].[GetMyValue] ( @entityId INT )
RETURNS INT
AS BEGIN
DECLARE @RtnValue AS INT
SELECT @RtnValue = top 1 SI.ID from Table SI with(nolock) where SI.id = @entityId AND SI.IsArchive = '0'
RETURN @RtnValue
END
和这样的地图
formula="dbo.GetMyValue(id)"
从理论上讲,这应该可以防止发生任何形式的关键字替换。
关于nhibernate - Nhibernate公式将模板字附加到sql关键字,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3333054/