我使用 EF Core 的 fluent 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。
脚手架的 Create Page 有一个下拉菜单,我将其替换为隐藏的文本框,它存储当前登录用户的 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
但这并没有什么不同。谁能指出我可以做些什么来解决这个错误?