用NHibernate编写计算属性

时间:2010-12-20 13:21:21

标签: nhibernate fluent-nhibernate

我正在使用NHibernate 2.1.2 + Fluent NHibernate

我有一个ContactInfo类和表。使用Name / EncryptByPassphrase在数据库(SQL Server)中加密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 :(得分:0)

映射到公式的属性是只读的。

在ContactInfoNameUpdater服务中包含的命名查询可能是解决问题的一种方法。