(これは私の実際のプロジェクトの非常に最小化されたバージョンであり、相互にリンクされたより多くのテーブルと、各テーブルのより多くのデータと列があります)。
- 異なる言語のコンテンツをサポートするコンテンツ管理システムの構造をどのように設定することをお勧めしますか? 次の方法は良いオプションですか?
私の現在のプロジェクトでは、記事を含むデータベースがあります。これらの記事は、列id、title、およびtextによって定義されます。title 列と text 列は、列text_idのテーブルLanguageDataへの外部キーです。そのテーブルには、プロジェクト全体のすべての文字列が保持されます。このテーブルは、列id、text_id、text、およびlanguage_idで構成されています。
例:
Article : { id : 1, title : 1, text : 2 }
LanguageData : { id : 1, text_id : 1, text : "Title in english", language_id : 1 }
LanguageData : { id : 2, text_id : 1, text : "Tittel på svenska", language_id : 2 }
LanguageData : { id : 3, text_id : 2, text : "Text in english", language_id : 1 }
LanguageData : { id : 4, text_id : 2, text : "Texto en español", language_id : 3 }
- 指定した言語の記事を返す高速な Web サービスを作成するにはどうすればよいですか?
私のプロジェクトには、language_id を入力として受け取り、正しい言語文字列が追加されたすべての記事を返す Web サービスもあります。このために、エンティティ フレームワークを使用してデータベースに接続し、データベース内の各記事と、LanguageData への外部キーである各列に対して、メソッドを呼び出します。
GetLanguageString(text_id, language_id)
return LanguageData.First(ld => ld.text_id == text_id && ld.language_id == language_id)
- LanguageData にリンクされた多数の列を含む 600 の記事を調べたい場合、これは非常に遅いようです。これを行うより良い方法はありますか?ここで言及されていない一部の列は、記事ごとに繰り返されることがよくあります (たとえば、列のカテゴリ)。同じテキストと同じ言語の文字列を既に検索している場合に再度実行する必要がないように、ラムダの質問の結果を保存する必要がありますか? ラムダ式または LINQ を使用する場合、問題はありますか? それらは同じように速いですか?
このトピックに関するいくつかのドキュメントは、喜んで受け取ります。私はバックエンドプログラミングが初めてで、ネット上でこれに関する情報を見つけることができないようです.
どうもありがとう。