我有一个奇怪的要求。简而言之,我有一张产品表和一张语言表。每个产品都包含一个英文字符串描述。在我的应用程序中,我需要以用户确定的 15 种语言之一显示描述。每个产品都包含一个IDictionary<Language, String>
包含本地化描述、按语言索引的内容。所有产品都有英文描述,但并非所有产品都同时翻译成所有 15 种语言。
奇怪的要求是:对于给定的产品,如果翻译后的产品描述不存在以用户的语言,则回退到英语。
如前所述,这可能看起来并不奇怪,但我正在努力映射它。在几次错误的开始之后,我在 SQL 中创建了一个视图,该视图基本上创建了和的交叉连接(笛卡尔积),ProductId
并LanguageId
与翻译表连接两次,一次用于所有翻译,一次用于英语子查询。从中,我使用 COALESCE() 提取翻译,以获取产品和语言代码的每种组合的翻译,必要时使用英语。所以基本上这个视图中的列ProductId
是LanguageId
和Translation
。
我将如何映射这个?最重要的是,我该如何查询?我只需要能够从这个视图中读取数据。
显然这有点复杂。有没有更好的办法?