将实体映射到多个表(EF4,WCF RiaServices) - 国际化

时间:2010-11-21 20:47:19

标签: internationalization entity-framework-4

如果我正确理解了其他几个帖子,如果它们不共享同一个主键,则目前无法将实体映射到多个表。

这仍然是真的吗?我想知道的是如何使用下面的数据库设计和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中
  • ProductID
  • ProductGroupID
  • LanguageID
  • ProductName
  • 说明......

如果可行,我可以将国际化表格从我的模型中删除,以使其更清晰。

EF4可以实现吗?欢迎任何有关解决这一问题的国际化指导和经验。

非常感谢

乌韦

1 个答案:

答案 0 :(得分:1)

我不知道您是否仍然遇到问题,但您可以使用产品视图解决问题,更准确,每种语言都有一个视图。