【发布时间】:2010-08-11 02:59:10
【问题描述】:
我有一个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
)
我正在尝试让两个类映射到该表:
- 第一个对象
User没有 Password 和 PasswordSalt 属性。 - 第二个对象称为
SecurityUser,继承自User,并定义了Password 和PasswordSalt 属性。
这背后的想法是SecurityUser 是一个需要中间服务来修改密码的内部对象。这是为了避免每次我需要查询用户时都返回密码和盐。
User 类是我所说的安全对象,它不提供任何用户敏感信息。
现在,我已经定义了两个地图:
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 创建了一个名为 SecurityUser 的表。我尝试使用Table("Users") 函数来指定同一个表,但是我得到一个无效的 nhibernate 映射。
我怎样才能实现我想要做的事情?还是有其他方法?
【问题讨论】:
标签: c# nhibernate fluent-nhibernate