2010-01-20 290 views
0

我在現有數據庫中具有以下一組表。NHibernate映射問題

資源 - RESOURCEID

LocalisedResource - LocalisedResourceID,資源ID,語言,文化,LocalisedTerm

辦公室 - OfficeId,NameResourceId

現在我婉查詢特定的辦公室,回到辦公室的名字對於特定的語言文化組合,如果沒有爲指定的語言和文化找到條目,則會回到默認語言「EN」和「GB」的文化。

所以,這樣的事情...

public class Office 
{ 
    public virtual int OfficeId { get; set; } 
    public string Name { get; set; }   
} 

repository.GetOffice(5 /* id */,"zh" /* language */,"cht" /* culture */); 

我們也想這樣做,保存太...

repository.SaveOffice(office,"zh" /* language */,"cht" /* culture */); 

目前,我們正在做我們所有的映射在自定義寫入的一組存儲過程,使用一個函數來提取正確的名稱。這顯然減慢了我們的速度,因爲我們必須爲我們所有的粗體代碼編寫大量的SP。

回答

1

這篇關於localizing NHibernate using filters的文章可能有助於檢索您的對象,但我不知道它是否有助於保存。

編輯爲添加:您可以將Localasied名稱映射爲Office上的集合,並使用OFfice上的方法從集合中查找本地化名稱。性能可能是可接受的,這取決於您的應用程序如何使用Office對象。

+0

非常好,給我一個下一步要走的起點。我現在不會回答這個問題,看看有沒有人可以解決這個問題,但如果沒有的話,會在幾天後標記爲最佳答案。 – 2010-01-21 08:04:52