2010-12-20 29 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服務中的命名查詢可能是解決該問題的一種方法。