Сопоставление объекта с несколькими таблицами (EF4, WCF RiaServices) - Интернационализация - PullRequest
1 голос
/ 21 ноября 2010

если я правильно понял несколько других сообщений, в настоящее время невозможно сопоставить сущность более чем одной таблице, если они не используют один и тот же первичный ключ.

Это все еще правда? Что мне интересно, так это то, как интернационализация должна быть обработана с помощью дизайна базы данных ниже и EF.

У меня есть интернационализированная база данных, где тексты хранятся в отдельных таблицах. например,

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

Итак, продукт состоит из двух таблиц. В таблице Product хранится независимая от языка часть, а в таблице Product_i18n - зависимая от языка часть. Эти две таблицы физически связаны с ассоциацией 1: n, но логически это ассоциация 1: 1, потому что мне всегда нужен один язык для определенной операции.

Поэтому я хотел бы объединить две таблицы в один объект Product, который состоит из столбцов

  • ProductID
  • ProductGroupID
  • LanguageID
  • ProductName
  • Описание ...

Если бы это было возможно, я мог бы исключить интернационализированную таблицу из своей модели, чтобы сделать ее более понятной.

Возможно ли это с EF4. Любые рекомендации и опыт в области интернационализации для решения этой проблемы приветствуются.

Большое спасибо

Уве

1 Ответ

1 голос
/ 28 марта 2011

Я не знаю, если у вас все еще есть проблема, но вы можете решить ее, используя представление для ваших продуктов, точнее, одно представление для каждого языка.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...