この種の問題を検索しましたが、残念ながら解決策は見つかりませんでした。
アプリケーションで連絡先を作成しようとすると、エラーが発生します
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 でデータベースに自動的に保存されますか?