2010-11-21 15 views
1

Si j'ai bien compris plusieurs autres publications, il est actuellement impossible de mapper une entité sur plusieurs tables si elles ne partagent pas la même clé primaire.Mappage d'une entité à plusieurs tables (EF4, WCia RiaServices) - Internationalisation

Est-ce encore vrai? Ce que je me demande, c'est comment l'internationalisation devrait être traitée avec le design db ci-dessous et EF.

J'ai une base de données internationalisée où les textes sont stockés dans des tables séparées. par exemple.

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 

Donc le produit se compose de deux tables. Dans la table Product, la partie indépendante de la langue est stockée et dans la table Product_i18n, la partie dépendante de la langue est stockée. Les deux tables sont physiquement liées à une association 1: n, mais logiquement c'est une association 1: 1 car j'ai toujours besoin d'une langue pour une opération donnée.

Je voudrais donc combiner les deux tables dans une seule entité produit qui se compose des colonnes

  • ProductID
  • ProductGroupID
  • languageId
  • ProductName
  • Description de ...

Si cela Peut-être que je pourrais garder la table internationalisée hors de mon modèle pour le rendre plus clair.

Est-ce possible avec EF4. Toute orientation et expérience en matière d'internationalisation pour résoudre ce problème sont les bienvenues.

Merci beaucoup

Uwe

Répondre

1

Je ne sais pas si vous avez encore le problème, mais vous pouvez le résoudre en utilisant une vue de vos produits, plus précis, un point de vue pour chaque langue.

+1

Vous pourriez utiliser une vue paramétrée, ce qui serait probablement mieux et permettrait d'ajouter facilement de nouvelles cultures. –