2009-11-03 5 views
10

私はデータベースのオブジェクトのローカライズされた値を必要とするシナリオを持っています。ローカライズされたテーブルとEntity Framework

動物を作成できるアプリケーションがあるとしましょう。ユーザーが英語の場合、動物の「名前」プロパティの値がUIの「Cat」として入力され、「チャット」として入力されます。フランス語で。

動物カルチャーテーブルには、親テーブルの同じ動物を指し示す2つのレコードが含まれています。

値を読み取るとき、 "Name"の値がユーザーカルチャに存在しない場合、デフォルト値(オブジェクトがもともと作成された値)が使用されます。 次の図は、データをSQLに格納される方法を示しています。

alt text

私はEntity Frameworkを使用してオブジェクトをモデルに、このスキーマをマップしようとしている、私は最高のものにと少し混乱しています問題にアプローチする方法。

EFはこれに適していますか? EF4を使うべきか?

このEFモデルは.NET RIA Servicesで使用されます。

おかげで、

ピエール・イヴ・Troel

+2

複数の言語を持っている必要がありますが、同時にアプリケーションに表示される、またはそれは、一度に一つの言語でしょうか? –

+0

あなたの質問とあなたがそれの最後に入れた "AD"との関係は何ですか?とにかくここでこの質問を見てくださいhttp://stackoverflow.com/questions/2272026 –

答えて

-1

私はあなたがデータベースにこれをしたいと思いますか分かりません。文化固有の名前を定義する設定ファイルやリソースを使用する方が賢明でしょう。

internationalization and localizationのマイクロソフトのドキュメントもチェックしてください。

+0

合意。これはiotを行う正しい方法です。 –

+7

リソースは、この場合のように、静的な値を動的なものよりもストアすることに専念しています。 Animalは、値(インスタンス)の数がわからないエンティティの定義です。この場合、より良いアプローチ(唯一のものではありません)は、Pyttrollによって提案されたものです – Lester

+1

昔、ユーザー/管理者が生成したコンテンツ用にデータベースを使用しています。世代に関しては、リソースファイルはコンパイルが必要なため、使用前の状態になっています。あなたはそれらを動的に生成しようとすることができますが、ロックの問題とDBMSによってすでに解決されている問題のホスト全体に入ります。 – rism

4

私が同様の状況で行ったことは、2つのテーブル構造のフラット表現であり、そのビューのEFモデルを作成したLocalizedAnimalsというビューが作成されたことです。ですから、私がフランスの動物のデータを表示する必要があるとき、私はそれらのLocalizedAnimalsをフィルタリングして結果として素敵な単純なオブジェクトリストを持っています。このような

何か:

var localizedAnimals = myContext.LocalizedAnimals.Where(
          p => p.CultureName == Thread.CurrentThread.CurrentUICulture.Name 
         ); 
関連する問題