我有一个ASP.NET MVC3应用程序,它具有多语言支持。几乎每个单词都有多语言支持,并且在每个页面请求中,我将当前所选语言中的所有单词从数据库中获取为List
,并将其用于每个Word
:我持有MeaningID
对于每个元素,并打印出List
中匹配的元素。成本高昂的方法,但比每个Word
达到数据库更好。
仍然,我想知道是否有一个我可以在整个项目中全局使用的数据结构,只有当用户更改所选语言时才从数据库加载。是否有类似列表结构的会话可以用于此目的吗?
编辑:为了让事情更清楚,我正在发布我的数据库表。
--Word-- --WordBase-- --Language--
ID ID ID
Text Text Name
BaseID
LanguageID
如图所示,WordBase
是Word
依赖于Language
的含义。示例数据是:
--Word-- --Base-- --Language--
1;Hallo;1;1 1;Hello 1-Deutsch
2;Hello;1;2 2;Good 2-English
3;Gut; 2;1
4;Good; 2;2
答案 0 :(得分:1)
您的网络应用就像一本字典?我的意思是......你的“文字”是你申请的数据......或者你在谈论国际化?
如果是国际化,我认为有更好的方法可以做到这一点......使用内置的工具。检查一下:http://afana.me/post/aspnet-mvc-internationalization.aspx
如果可翻译数据太大......可能您可能采用混合方法......在数据库中保留令牌......并在资源文件中进行翻译。然后,缓存将非常有用,特别是如果您的数据不经常更改(您可以将缓存设置为30分钟......那时您可以避免SQL查询在每个请求中检索单词)。
答案 1 :(得分:0)
您应该使用Cache
缓存此内容。然后,您可以管理Cache
以在用户会话期间或到期时保留信息。