У меня есть таблица 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.
Как мне достичь того, что я пытаюсь сделать? Или есть альтернативный подход?