2010-01-20 194 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