если я правильно понял несколько других сообщений, в настоящее время невозможно сопоставить сущность более чем одной таблице, если они не используют один и тот же первичный ключ.
Это все еще правда? Что мне интересно, так это то, как интернационализация должна быть обработана с помощью дизайна базы данных ниже и 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. Любые рекомендации и опыт в области интернационализации для решения этой проблемы приветствуются.
Большое спасибо
Уве