Microsoft Entity Framework未显示某些表的外键

时间:2013-01-03 15:21:16

标签: sql-server foreign-keys entity-framework-5

我使用Entity Framework Version 5.0从数据库构建了实体模型。以下DDL用于创建表:

CREATE TABLE [dbo].[Replenishment](
    [replenishmentId] [int] IDENTITY(1,1) NOT NULL,
    [locationID] [int] NOT NULL,
    [inventoryItemId] [int] NOT NULL,
PRIMARY KEY CLUSTERED 
    ([replenishmentId] ASC)
    WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF,
    ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
    ) ON [PRIMARY]

GO

ALTER TABLE [dbo].[Replenishment]  
    WITH CHECK ADD  CONSTRAINT [FKReplenishm163678]
    FOREIGN KEY([inventoryItemId])
    REFERENCES [dbo].[InventoryItem] ([inventoryItemId])
GO

ALTER TABLE [dbo].[Replenishment] CHECK CONSTRAINT [FKReplenishm163678]
GO

ALTER TABLE [dbo].[Replenishment]  
    WITH CHECK ADD  CONSTRAINT [FKReplenishm580804] 
    FOREIGN KEY([locationID])
    REFERENCES [dbo].[Location] ([locationID])
GO

ALTER TABLE [dbo].[Replenishment] CHECK CONSTRAINT [FKReplenishm580804]
GO

当我使用表Replenishment,Location和InventoryItem构建实体模型时,所有三个表都显示在模型中,但没有任何关系。

有谁知道为什么没有出现外键或导航属性?

=============================================== =============================

以下是关联表中的DDL: 这是其他两个表中的ddl:

CREATE TABLE [dbo].[Location](
[locationID] [int] IDENTITY(1,1) NOT NULL,
[addressID] [int] NULL,
[availabilityStatusID] [int] NOT NULL,
[inLocationId] [int] NULL,
[locationTypeID] [int] NOT NULL,
[locationName] [varchar](40) NOT NULL,
[locationDescription] [varchar](100) NOT NULL,
[locationAnchorX] [int] NULL,
[locationAnchorY] [int] NULL,
[locationImage] [varchar](255) NULL,
[diagramLayerId] [int] NULL,
[locationShapeParameters] [varchar](max) NULL,
[locationHeight] [int] NULL,
    [locationWidth] [int] NULL,
    [locationColor] [varchar](20) NULL,
PRIMARY KEY CLUSTERED 
(
[locationID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY     = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]

GO

SET ANSI_PADDING OFF
GO

ALTER TABLE [dbo].[Location]  WITH CHECK ADD  CONSTRAINT [FKLocation209934] FOREIGN KEY([inLocationId])
REFERENCES [dbo].[Location] ([locationID])
GO

ALTER TABLE [dbo].[Location] CHECK CONSTRAINT [FKLocation209934]
GO


CREATE TABLE [dbo].[InventoryItem](
[inventoryItemId] [int] IDENTITY(1,1) NOT NULL,
[itemTaxonomyId] [int] NOT NULL,
[itemDescription] [varchar](100) NOT NULL,
[itemCode] [varchar](40) NULL,
[batchControlled] [bit] NOT NULL,
[assemblyDefinitionID] [int] NULL,
PRIMARY KEY CLUSTERED 
(
    [inventoryItemId] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]

GO

SET ANSI_PADDING OFF
GO

1 个答案:

答案 0 :(得分:0)

我相信我发现了这个问题。我一直在做一些SQL Server身份验证工作,一些使用Windows身份验证。使用Windows身份验证输入的信息未被我的Visual Studio看到,它使用SQL Server身份验证进行连接。

经过进一步研究后,我发现事实并非如此。我仍然对此感到困惑。