我有一个
User
表定义如下:
CREATE TABLE Users(
UserId int IDENTITY(1,1) NOT NULL,
UserName varchar(128) NOT NULL,
Name nvarchar(200) NOT NULL,
Password binary(64) NOT NULL,
PasswordSalt binary(16) NOT NULL
)
我试着用两个类映射到这个表:
-
第一个对象
用户
没有密码和密码盐属性。
-
第二个对象
SecurityUser
继承
用户
并定义密码和密码盐属性。
这背后的想法是
安全用户
是需要中间服务来修改密码的内部对象。这是为了避免每次我需要查询用户时都返回密码和salt。
这个
用户
我所说的类是一个不提供任何用户敏感信息的安全对象。
现在,我定义了两个映射:
public class UserMap : ClassMap<User>
{
protected UserMap()
{
Id(x => x.Id);
Map(x => x.UserName);
Map(x => x.Name);
}
}
和
public class SecurityUserMap : SubclassMap<SecurityUser>
{
protected SecurityUserMap()
{
Map(x => x.Password);
Map(x => x.PasswordSalt);
Table("Users");
}
}
问题是nhibernate创建了一个名为
安全用户
. 我试着用
Table("Users")
函数来指定同一个表,但随后得到的nhibernate映射无效。
我如何才能实现我正在尝试的目标?或者有其他方法吗?