在Visual Studio 2013 update3中,在SQL Server 2012的PERSON表中将主键从SAM_ID更改为ID后,基于Entity Framework 5.0的数据模型未获取pk-fk关系。
重新创建所有约束而没有任何问题。 SQL Server中的图表显示了正确的关系。
我尝试在Visual Studio中清理解决方案并重新创建ADO.NET实体数据模型,但是在持有主键的表和持有外键的表之间仍然没有关系。
主要密钥表PERSON :
CREATE TABLE [dbo].[PERSON](
[ID] [int] IDENTITY(100001,1) NOT NULL,
[SAM_ID] [varchar](128) NOT NULL,
[NAME] [varchar](256) NOT NULL,
[MANAGER_SAMID] [varchar](128) NULL,
[IMAGE_ID] [int] NULL,
[MANAGER_ID] [int] NULL,
CONSTRAINT [PK_PERSON_1] PRIMARY KEY CLUSTERED
(
[ID] 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
外键表格INFO :
CREATE TABLE [dbo].[INFO](
[ID] [int] IDENTITY(1,1) NOT NULL,
[PID] [int] NOT NULL,
[PERSON_ID] [varchar](128) NOT NULL,
[TITLE] [varchar](512) NOT NULL,
[DESCRIPTION] [varchar](max) NULL,
CONSTRAINT [PK_INFO] PRIMARY KEY CLUSTERED
(
[ID] 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
ALTER TABLE [dbo].[INFO] WITH CHECK ADD CONSTRAINT [FK_INFO_PERSON] FOREIGN KEY([PID])
REFERENCES [dbo].[PERSON] ([ID])
GO
ALTER TABLE [dbo].[INFO] CHECK CONSTRAINT [FK_INFO_PERSON]
GO
我可以尝试什么?
答案 0 :(得分:0)
这篇SO帖子提供了一个提示,它有效:https://stackoverflow.com/questions/20576610/entity-framework-db-first-not-picking-up-relation
在更改PK之前,我已经在将要PK上添加了一个独特的约束。显然,在将其作为PK后,需要删除唯一约束。
答案 1 :(得分:0)
我在VS2013 Update 4中遇到了类似的问题:模型图没有显示我的表关系。我最初对最终更改为PK的列有一个唯一的索引约束。从PK中删除唯一索引约束允许模型图获取表关系。