C# 如何查询NHibernate中不属于模型的属性?

C# 如何查询NHibernate中不属于模型的属性?,c#,nhibernate,C#,Nhibernate,我有一个用户实体,其中包含用户名、名称和其他非敏感信息 在身份验证期间,我需要查询密码(哈希)和密码salt,以便进行哈希比较。由于其敏感性,这两个属性不属于模型的一部分 如何在NHibernate中查询这两个属性而不使用CreateSQLQuery?现在我知道CreateSQLQuery可以工作了,但我正在尝试找到一种非SQL方式。创建一个DTO,该DTO将映射到与User相同的表,并且仅用于此目的,然后使用它。 例如— public class AuthUserDTO { public

我有一个
用户
实体,其中包含用户名、名称和其他非敏感信息

在身份验证期间,我需要查询密码(哈希)和密码salt,以便进行哈希比较。由于其敏感性,这两个属性不属于模型的一部分


如何在NHibernate中查询这两个属性而不使用
CreateSQLQuery
?现在我知道
CreateSQLQuery
可以工作了,但我正在尝试找到一种非SQL方式。

创建一个DTO,该DTO将映射到与
User
相同的表,并且仅用于此目的,然后使用它。
例如—

public class AuthUserDTO
{
   public virtual string Username {get; set;}
   public virtual string PasswordHash {get; set;}
   public virtual string Salt {get; set;}
}

所有“常规”方法都将返回常规的
User
对象,但
GetUserForAuthentication
将返回
AuthUserDTO
的对象除外。您可以使用“access”属性在映射文件中使用仅查询属性。例如,在您的hbm文件中:

<property name="PasswordHash" type="string" column="PasswordHash" access="none" />


这将允许您在HQL或Criteria查询中查询PasswordHash,就像它是一个普通属性一样,但您的用户类中实际上没有PasswordHash属性。

您将如何在“loquacious”映射中定义此类属性?恐怕不确定,没有使用loquacious