我搜索了这类问题,但遗憾的是没有找到任何解决方案。
当我尝试在我的应用程序中创建联系人时出现错误
INSERT语句与FOREIGN KEY约束“FK_Contacts_UserProfile”冲突。冲突发生在数据库“ContactAppContext”,表“dbo.UserProfile”,列'UserId'。
我想将UserId
与Contacts
表
我的表格如下:
CREATE TABLE [dbo].[Contacts] (
[ContactId] INT IDENTITY (1, 1) NOT NULL,
[UserId] INT NOT NULL,
[FirstName] NVARCHAR (MAX) NOT NULL,
[LastName] NVARCHAR (MAX) NOT NULL,
[Address] NVARCHAR (MAX) NOT NULL,
[City] NVARCHAR (MAX) NOT NULL,
[Phone] NVARCHAR (MAX) NOT NULL,
[Email] NVARCHAR (MAX) NOT NULL,
CONSTRAINT [PK_dbo.Contacts] PRIMARY KEY CLUSTERED ([ContactId] ASC),
CONSTRAINT [FK_Contacts_UserProfile] FOREIGN KEY ([UserId]) REFERENCES [dbo].[UserProfile] ([UserId])
);
CREATE TABLE [dbo].[UserProfile] (
[UserId] INT IDENTITY (1, 1) NOT NULL,
[UserName] NVARCHAR (56) NOT NULL,
PRIMARY KEY CLUSTERED ([UserId] ASC),
UNIQUE NONCLUSTERED ([UserName] ASC)
);
正如您在图片中看到的那样,UserId
表格中存在UserProfile
那么我做错了什么?
编辑1
@Alexander Fedorenko
你的意思是这段代码?
SET IDENTITY_INSERT [dbo].[UserProfile] ON
INSERT INTO [dbo].[UserProfile] ([UserId], [UserName]) VALUES (1, N'admin')
INSERT INTO [dbo].[UserProfile] ([UserId], [UserName]) VALUES (2, N'test')
INSERT INTO [dbo].[UserProfile] ([UserId], [UserName]) VALUES (3, N'user')
SET IDENTITY_INSERT [dbo].[UserProfile] OFF
@Sachin我怎样才能确定,当我尝试在Contact表中插入时,它应该出现在UserProfile表中?我有一个UserId = 3的用户登录,当他插入数据时,创建的联系人将与该用户有关。
编辑2
因此,当我在视图中为UserId
创建一个编辑器字段时,它似乎正在工作,当我指定UserId
时,数据已创建,但我不希望此编辑器字段用于{存在“创建联系人”页面中的{1}},因为用户编写他的UserId
不方便。因此可以将UserId
与登录用户相关联,例如,当他创建数据时,他不需要指定他的UserId
,而是记录将自动保存到数据库中,并带有他的ID ?
答案 0 :(得分:2)
您需要先将数据添加到UserProfile表,或者在插入数据时临时禁用外键约束。
您的表已设置为Contact表引用UserProfile表,因此需要在UserProfile中输入以插入联系人。
以这种方式看待:如果你不首先在UserProfile表中生成它,你怎么知道要在Contacts表中输入的UserID是什么?
答案 1 :(得分:0)
首先尝试创建UserProfile表,然后创建Contacts表。