Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
insert语句与外键约束冲突-SQL Server 2012_Sql_Sql Server_Entity Framework - Fatal编程技术网

insert语句与外键约束冲突-SQL Server 2012

insert语句与外键约束冲突-SQL Server 2012,sql,sql-server,entity-framework,Sql,Sql Server,Entity Framework,我有3个表:Application、Control和applicationcontrol,这基本上是应用程序和控件之间的多对多关系 应用程序表 App_ID int (PK) ..... 应用程序控制表 FK_APP_ID int (PK) FK_Controls_ID (PK) ID int (PK) Name varchar(50) 和控制表 FK_APP_ID int (PK) FK_Controls_ID (PK) ID int (PK) Name varchar(50

我有3个表:Application、Control和applicationcontrol,这基本上是应用程序和控件之间的多对多关系

应用程序表

App_ID int (PK)
.....
应用程序控制表

FK_APP_ID int (PK)
FK_Controls_ID (PK)
ID int (PK)
Name varchar(50)     
和控制表

FK_APP_ID int (PK)
FK_Controls_ID (PK)
ID int (PK)
Name varchar(50)     
应用程序表和控制表都填充了一些条目。当我尝试在ApplicationControl表中插入一个条目时(从应用程序获取一个id,从控件获取一个id),它会说:

你知道为什么吗?它可以插入应用程序ID,但不能插入控件ID,这两种关系之间没有任何区别

USE [PicknickDB]
GO

/****** Object:  Table [dbo].[ApplicationControl]    Script Date: 7/10/2013 3:21:29 PM  ******/ 
SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

CREATE TABLE [dbo].[ApplicationControl](
[FK_App_ID] [int] NOT NULL,
[FK_Controls_ID] [int] NOT NULL,
CONSTRAINT [PK_ApplicationControl] PRIMARY KEY CLUSTERED 
(
[FK_App_ID] ASC,
[FK_Controls_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

 ALTER TABLE [dbo].[ApplicationControl]  WITH CHECK ADD  CONSTRAINT       [FK_MapAppControls_Applications] FOREIGN KEY([FK_App_ID])
REFERENCES [dbo].[Application] ([App_ID])
ON UPDATE CASCADE
ON DELETE CASCADE
GO

ALTER TABLE [dbo].[ApplicationControl] CHECK CONSTRAINT   [FK_MapAppControls_Applications]
GO

ALTER TABLE [dbo].[ApplicationControl]  WITH CHECK ADD  CONSTRAINT [FK_MapAppControls_Controls] FOREIGN KEY([FK_App_ID])
REFERENCES [dbo].[Control] ([ID])
ON UPDATE CASCADE
ON DELETE CASCADE
GO

ALTER TABLE [dbo].[ApplicationControl] CHECK CONSTRAINT [FK_MapAppControls_Controls]
GO

在这种情况下,最好打开探查器,查看它试图插入的值。这可能会导致了解问题的原因。我最可能的猜测是,发送给第二个表的insert的值为NULL,因为代码忘记在此处设置它

在这种情况下,最好打开探查器,查看它试图插入的值。这可能会导致了解问题的原因。我最可能的猜测是,发送给第二个表的insert的值为NULL,因为代码忘记在此处设置它

ALTER TABLE [dbo].[ApplicationControl]  WITH CHECK ADD  CONSTRAINT 

[FK_MapAppControls_Controls] FOREIGN KEY([FK_App_ID]) --Really?

REFERENCES [dbo].[Control] ([ID])
ON UPDATE CASCADE
ON DELETE CASCADE
因此,
FK_App_ID
被用作
应用程序和
控件
表的引用

我建议改为
FK\u Controls\u ID

因此,
FK_App_ID
被用作
应用程序和
控件
表的引用


我建议改为
FK\u ID

您能发布您的实际DDL吗?例如,FK中可能有一个错误,例如引用了错误的表。从设计角度来看,它看起来很好,我有5个类似的表(多对多关系),插入可以正常工作。您可以发布实际的DDL吗?例如,FK中可能有一个错误,例如引用了错误的表。从设计角度来看,它看起来不错,我有5个类似的表(多对多关系),插入可以正常工作。