Написание вычисляемых свойств с помощью NHibernate - PullRequest
4 голосов
/ 20 декабря 2010

Я использую NHibernate 2.1.2 + Свободный NHibernate

У меня есть ContactInfo класс и таблица. Столбец Name зашифрован в базе данных (SQL Server) с использованием EncryptByPassphrase / DecryptByPassphrase.

Ниже приведены соответствующие биты схемы / класса / отображения:

table ContactInfo(
  int Id,
  varbinary(108) Name)

public class ContactInfo
{
  public virtual int Id { get; set; }
  public virtual string Name { get; set; }
}

public class ContactInfoMap : ClassMap<ContactInfo>
{
  public ContactInfoMap()
  {
    Id(x => x.Id);
    Map(x => x.Name)
      .Formula("Convert(nvarchar, DecryptByPassPhrase('passphrase', Name))");
  }
}

При использовании подхода Formula, как указано выше, значения корректно считываются из базы данных, но NHibernate не пытается вставить / обновить значения при сохранении в базе данных (что имеет смысл).

Проблема в том, что я хотел бы иметь возможность записать значение Name, используя соответствующую функцию EncryptByPassPhrase. Я не уверен, поддерживает ли NHibernate это, и если это так, я не смог найти правильные слова для эффективного поиска документации.

Итак ... как я могу записать это вычисленное свойство обратно в базу данных с помощью NHibernate?

Заранее спасибо!

1 Ответ

0 голосов
/ 09 марта 2011

Свойство, сопоставленное с формулой, доступно только для чтения.

Именованный запрос, заключенный в службу ContactInfoNameUpdater, может быть одним из способов решения проблемы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...