1

我搜索了这种问题,但不幸的是没有找到任何解决方案。

当我尝试在我的应用程序中创建联系人时出现错误

INSERT 语句与 FOREIGN KEY 约束“FK_Contacts_UserProfile”冲突。冲突发生在数据库“ContactAppContext”、表“dbo.UserProfile”、列“UserId”中。

我想UserIdContacts表关联

我的表如下所示:

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我如何确保当我尝试在联系人表中插入时,它应该出现在 UserProfile 表中?例如,我有一个 UserId = 3 的用户,他已登录并且当他插入数据时,创建的联系人将与该用户相关。

编辑 2
因此,当我在视图中创建一个编辑器字段时UserId,它似乎正在工作,当我指定UserId, 并创建数据时,但我不希望UserId在创建联系人页面中存在此编辑器字段,因为它是用户会写他的UserId. 那么是否可以与UserId登录用户相关,例如当他创建数据时,他不需要指定他的UserId,而是记录会自动保存到带有他的 ID 的数据库中?

4

2 回答 2

2

您需要先将数据添加到 UserProfile 表,或者在插入数据时临时禁用外键约束。

您的表已设置为使 Contacts 表引用 UserProfile 表,因此需要 UserProfile 中的条目才能插入联系人。

这样看:如果您不先在 UserProfile 表中生成它,您如何知道要在 Contacts 表中输入的 UserID 是什么?

于 2013-05-27T08:39:51.430 回答
0

尝试先创建 UserProfile 表,然后再创建 Contacts 表。

于 2013-05-26T09:57:22.397 回答