实体框架在SQL Server中更改主键后未获取关系

时间:2014-10-17 20:37:17

标签: sql-server entity-framework tsql visual-studio-2013

在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

我可以尝试什么?

2 个答案:

答案 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中删除唯一索引约束允许模型图获取表关系。