会议持有大名单

时间:2013-08-29 16:43:37

标签: asp.net-mvc-3

我有一个ASP.NET MVC3应用程序,它具有多语言支持。几乎每个单词都有多语言支持,并且在每个页面请求中,我将当前所选语言中的所有单词从数据库中获取为List,并将其用于每个Word:我持有MeaningID对于每个元素,并打印出List中匹配的元素。成本高昂的方法,但比每个Word达到数据库更好。

仍然,我想知道是否有一个我可以在整个项目中全局使用的数据结构,只有当用户更改所选语言时才从数据库加载。是否有类似列表结构的会话可以用于此目的吗?

编辑:为了让事情更清楚,我正在发布我的数据库表。

 --Word--           --WordBase--          --Language--
  ID                   ID                    ID
  Text                 Text                  Name
  BaseID
  LanguageID

如图所示,WordBaseWord依赖于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

2 个答案:

答案 0 :(得分:1)

您的网络应用就像一本字典?我的意思是......你的“文字”是你申请的数据......或者你在谈论国际化?

如果是国际化,我认为有更好的方法可以做到这一点......使用内置的工具。检查一下:http://afana.me/post/aspnet-mvc-internationalization.aspx

如果可翻译数据太大......可能您可能采用混合方法......在数据库中保留令牌......并在资源文件中进行翻译。然后,缓存将非常有用,特别是如果您的数据不经常更改(您可以将缓存设置为30分钟......那时您可以避免SQL查询在每个请求中检索单词)。

答案 1 :(得分:0)

您应该使用Cache缓存此内容。然后,您可以管理Cache以在用户会话期间或到期时保留信息。

看看这里:Walkthrough: Caching Application Data in ASP.NET