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