我在现有数据库中有以下一组表。
资源 - 资源ID
LocalisedResource - LocalisedResourceID,ResourceID,Language,Culture,LocalisedTerm
Office - 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 */);
目前,我们正在使用函数提取正确名称,在自定义写入的存储过程集中执行所有映射。这显然减缓了我们的速度,因为我们必须为我们所有的crud代码编写大量的SP。
答案 0 :(得分:1)
localizing NHibernate using filters上的这篇文章可能有助于检索您的对象,但我不知道它是否有助于保存。
编辑添加:您可以将localasied名称映射为Office上的集合,并使用OFfice上的方法从集合中查找本地化名称。根据应用程序使用Office对象的方式,性能可能是可接受的。