2010-11-21 11 views
1

他のいくつかの投稿が正しく理解されていれば、同じプライマリキーを共有していないエンティティを複数のテーブルにマップできません。エンティティを複数のテーブルにマッピングする(EF4、WCF RiaServices) - 国際化

これは本当ですか?私が思っているのは、以下のdbデザインとEFで国際化をどのように扱うべきかということです。

テキストが別々のテーブルに格納されている国際化されたdbがあります。例:

CREATE TABLE Product(
ProductID int IDENTITY(1,1) NOT NULL, 
ProductGroupID int NOT NULL, 
... 
CONSTRAINT PK_Product PRIMARY KEY CLUSTERED 
(
ProductID ASC 
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON PRIMARY 
) ON PRIMARY 

CREATE TABLE Product_i18n(
ProductID int NOT NULL, 
LanguageID int NOT NULL, 
ProductName nvarchar(150) NULL, 
Description nvarchar(max) NULL, 
... 
CONSTRAINT PK_Product_i18n PRIMARY KEY CLUSTERED 
(
ProductID ASC, 
LanguageID ASC 
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON PRIMARY 
) ON PRIMARY 

したがって、製品は2つのテーブルで構成されています。表Productには言語非依存部分が格納され、表Product_i18nには言語依存部分が格納されます。 2つのテーブルは物理的に1:n関連でリンクされていますが、論理的には1:1の関連付けです。これは、特定の操作で常に1つの言語が必要なためです。

ので、私は列で構成され、単一のエンティティの製品で二つのテーブル

  • のProductID
  • ProductGroupID
  • を言語ID結合したい商品名
  • 説明...

これは可能なのですが、もっと明確にするために、国際化されたテーブルを私のモデルから守ることができました。

これはEF4で可能ですか?この問題を解決するための国際化に関する指導や経験は大歓迎です。

どうもありがとう

ウーヴェ

答えて

1

あなたはまだ問題を抱えているが、あなたはあなたの製品のためのビューを使用して、それを解決することができ、より正確に、各言語に1つのビューかどうかは知りません。

+1

パラメータ表示を使用することもできます。これはおそらく、新しいカルチャの追加を容易にします。 –