1

この種の問題を検索しましたが、残念ながら解決策は見つかりませんでした。

アプリケーションで連絡先を作成しようとすると、エラーが発生します

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

写真

それで、私は何を間違っていますか?

EDIT 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 のユーザーがいて、データを挿入すると、そのユーザーに関連する連絡先が作成されます。

EDIT 2
したがってUserId、ビューでエディターフィールドを作成し、それが機能しているように見えますUserId.UserIdユーザーが自分のUserId. ログインしているユーザーに関連付けることは可能ですか?UserIdたとえば、データを作成するときに、彼は自分の を指定する必要はありませんUserId。代わりに、レコードは自分の ID でデータベースに自動的に保存されますか?

4

2 に答える 2

0

最初に UserProfile テーブルを作成し、次に Contacts テーブルを作成してみてください。

于 2013-05-26T09:57:22.397 に答える