0

使用VS2010中的实体设计器为SQL Server 2005构建数据库。当我试图通过“从模型生成数据库”生成的SQL实际构建表时出现问题;这些表格都是正确创建的,但它抨击外键约束。SQL Server 2005 +实体设计器 - 外键约束错误?

有争议的实体都在这里布局:

World: 
    WORLD_ID [int32] (Primary Key) 
    Name [String] 

Zone: 
    WORLD_ID [int32] (Primary key, FK on World.WORLD_ID) 
    ZONE_ID [int32] (Primary key) 
    Name [String] 

Region: 
    WORLD_ID [int32] (Primary key, FK on Zone.WORLD_ID) 
    ZONE_ID [int32] (Primary key, FK on Zone.ZONE_ID) 
    REGION_ID [int32] (Primary key) 
    Name [String] 

生成的SQL代码,这部分的问题是:

-- Creating foreign key on [ZONE_ID], [WORLD_ID] in table 'Regions' 
ALTER TABLE [dbo].[Regions] 
ADD CONSTRAINT [FK_ZoneRegion] 
    FOREIGN KEY ([ZONE_ID], [WORLD_ID]) 
    REFERENCES [dbo].[Zones] 
     ([ZONE_ID], [WORLD_ID]) 
    ON DELETE NO ACTION ON UPDATE NO ACTION; 

的错误是这样的:

有在被引用的表'dbo.Zone' 中没有与前面的引用列表匹配的主键或候选键点击键'FK_ZoneRegion'。

我必须承担这个问题有事情做的事实是,在我的多列主键(WORLD_ID + ZONE_ID + REGION_ID),ZONE_ID和WORLD_ID都是外键,特别是WORLD_ID实际上是也是表中的外键与FK的来源。

这里的结构有什么问题吗?对于我只从一个区域 - >区域进行单一关联是不行的,事实上我必须有两个关联,一个来自世界 - >区域,另一个来自区域 - >区域?

感谢, -Dan

回答

0

对于它的价值,我结束了刚刚重新从头开始构建实体图,和它的工作。不知道我在初始图中是否有错误,或者这是否与Entity Designer有关。