asp.net-mvc - mvc dot.net 模型的多语言数据库模式

标签 asp.net-mvc database multilingual

我们过去用经典的 asp 开发了一些网站,从公司展示网站到 eshops。所有这些都是在多语言环境 (el, en) 中开发的,其中大部分。从数据库 View 中,我们选择了以下模式。例如,对于产品表,我们有两个相关表,一个没有语言依赖字段,另一个用于具有一对多关系的语言依赖字段。

CREATE TABLE ref_language (
  Code Char(2)NOT NULL,
  Name Varchar(20) NOT NULL,
  PRIMARY KEY (Code)
);
 
CREATE TABLE app_product (
 Id Int IDENTITY NOT NULL,
 PRIMARY KEY (Id)
);
 
CREATE TABLE app_product_translation (
 ProductId Int NOT NULL,
 LanguageCode Char(2) NOT NULL,
 Description Text NOT NULL,
 FOREIGN KEY (ProductId) REFERENCES app_product(Id),
 FOREIGN KEY (LanguageCode) REFERENCES ref_language(Code)
);

为了重新创建产品模型,我们使用存储过程来连接所请求语言的两个表。 现在我们要进入 dot.net mvc 模型。我们想知道是否有更好的方法,最适合 mvc 模型。

最佳答案

这取决于您的要求,但您可以只创建一个类来加载和缓存内存中的字幕,使用 EF 加载它们。使用静态类或最好使用 ASP.NET 缓存。

如果您在客户端执行动态操作,则在必要时通过 WebAPI Controller 的 MVC 公开字符串。

为了使这更容易,我会将您的翻译与架构中的产品分离。使您的翻译具有通用性。

只有一个名为 app_translation 的表,其中包含 Id、LanguageCode 和 Translation 字段。然后在需要翻译标题的任何表格上引用 Id。

要强制引用完整性,您还可以拥有一个包含单列和唯一约束的 app_translation_identifier 表。然后从 app_translation.Id FK 到 app_tranlsation_identifier.Id。并且在 app_translation 上还有一个唯一键用于 Id 和 LanguageCode。

关于asp.net-mvc - mvc dot.net 模型的多语言数据库模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28973517/

相关文章:

asp.net-mvc - 如何将 MVC3 Web 应用程序部署到 Azure

python - 如何使用 Django 将 python 类存储到数据库中?

使用 C 语言的套接字 API 创建服务器和客户端程序,例如在线预订程序

html - 以最少的维护实现多 ccTLD 网站

php - 用 PHP 构建的多语言(多语言)网站的自定义 404 页面

c# - 如何访问外部 .config 文件?

html - ASP.NET MVC 如何从数据库中包含 css

c++ - utf-8(波兰语)无法正常工作的可视化

asp.net-mvc - ASP.Net MVC 你在哪里从实体转换到 View 模型?

c# - MVVM 中的数据库模型