0

我有一个支持多语言的 ASP.NET MVC3 应用程序。几乎每个单词都支持多语言,并且在每次页面请求时,我都会从数据库中获取当前所选语言的所有单词到 a 中List,并为每个单词使用它Word:我MeaningID为每个元素保留并从List. 方法成本高,但比为每个Word.

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

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

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

可以看出,WordBases 是Words 依赖于 a 的含义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
4

2 回答 2

1

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

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

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

于 2013-08-31T21:50:32.023 回答
0

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

看看这里:演练:在 ASP.NET 中缓存应用程序数据

于 2013-08-29T16:56:44.213 回答