如果我正确理解了其他几个帖子,如果它们不共享同一个主键,则目前无法将实体映射到多个表。
这仍然是真的吗?我想知道的是如何使用下面的数据库设计和EF来处理国际化。
我有一个国际化的数据库,其中文本存储在单独的表中。 e.g。
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中如果可行,我可以将国际化表格从我的模型中删除,以使其更清晰。
EF4可以实现吗?欢迎任何有关解决这一问题的国际化指导和经验。
非常感谢
乌韦
答案 0 :(得分:1)
我不知道您是否仍然遇到问题,但您可以使用产品视图解决问题,更准确,每种语言都有一个视图。