奇妙な要件があります。簡単に言うと、製品の表と言語の表があります。各製品には、英語の文字列である説明が含まれています。私のアプリケーションでは、ユーザーが決定した 15 の言語のいずれかで説明を表示する必要があります。各製品には、IDictionary<Language, String>
言語別に索引付けされたローカライズされた説明を含む が含まれています。すべての製品に英語の説明がありますが、すべての製品が一度に 15 言語すべてに翻訳されているわけではありません。
奇妙な要件は次のとおりです。特定の製品について、翻訳された製品説明がユーザーの言語に存在しない場合は、英語にフォールバックします。
述べたように、これはそれほど奇妙に思えないかもしれませんが、これをマッピングするのに苦労しています。ProductId
いくつかの誤った開始の後、基本的にandのクロス結合 (デカルト積) を作成LanguageId
し、翻訳テーブルと 2 回、すべての翻訳に対して 1 回、英語のサブクエリで 1 回結合するビューを SQL で作成しました。これから、COALESCE() を使用して翻訳を抽出し、製品コードと言語コードの各組み合わせの翻訳を、必要に応じて英語で取得します。したがって、基本的にこのビューの列はProductId
、LanguageId
およびTranslation
です。
これをどのようにマッピングしますか?最も重要なのは、これを照会するにはどうすればよいですか? このビューからデータを読み取ることができれば十分です。
明らかに、これは少し複雑です。より良い方法はありますか?