我使用流畅的EF Core API创建了一个复合主键,该主键创建了此表:
CREATE TABLE [dbo].[Review]
(
[UserId] NVARCHAR(450) NOT NULL,
[ArticleId] INT NOT NULL,
[ReviewRating] FLOAT(53) NOT NULL,
[ReviewContent] NVARCHAR(MAX) NOT NULL,
[ReviewLastUpdate] DATETIME2(7) NULL,
[ReviewCreated] DATETIME2(7) DEFAULT (getdate()) NOT NULL,
[ReviewVisible] BIT DEFAULT ((1)) NOT NULL,
CONSTRAINT [PK_Review]
PRIMARY KEY CLUSTERED ([UserId] ASC, [ArticleId] ASC),
CONSTRAINT [FK_Review_AspNetUsers_UserId]
FOREIGN KEY ([UserId])
REFERENCES [dbo].[AspNetUsers] ([Id])
ON DELETE CASCADE,
CONSTRAINT [FK_Review_Article_ArticleId]
FOREIGN KEY ([ArticleId])
REFERENCES [dbo].[Article] ([ArticleId])
ON DELETE CASCADE
);
UserId
来自AspNetUsers表,而Article是我创建的自定义表设置,可自动生成其ID。
支架式创建页面有一个下拉菜单,我用一个隐藏的文本框代替了该文本框,该文本框存储了当前登录用户的UserId值,并在提交表单时将其提交。
但是在提交时,我抛出了SQL异常
SqlException:将nvarchar值'57ed59a3-e2c9-4805-a57d-3d1ea7afed3f'转换为数据类型int时,转换失败。
57ed59a3-e2c9-4805-a57d-3d1ea7afed3f
是UserId
。即使我尝试直接输入一个值,也会向我抛出相同的错误。
我什至尝试将其更改为非群集,因为可能由于此处所述的第三个原因而发生冲突:https://docs.microsoft.com/en-us/sql/relational-databases/indexes/create-clustered-indexes?view=sql-server-2017#Restrictions
但这并没有改变。谁能指出我可以解决该错误的方向?