2010-12-20 81 views
4

我使用的是NHibernate 2.1.2 + Fluent NHibernate用NHibernate编写计算属性

我有一个ContactInfo类和表。使用EncryptByPassphrase/DecryptByPassphrase在数据库(SQL Server)中加密Name列。

以下是相关的架构/班/映射位:

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的不尝试插入/更新保存到数据库时的值(这是有道理的)。

问题是我希望能够使用相应的EncryptByPassPhrase函数编写Name值。我不确定NHibernate是否支持这一点,如果确实如此,我一直无法找到正确的单词来有效地搜索文档。

所以...我怎么能用NHibernate把这个计算的属性写回数据库?

在此先感谢!

回答

0

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

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