SQL Server在将数据插入复合群集主键时强制将nvarchar转换为int

时间:2019-03-08 15:08:01

标签: sql-server asp.net-core ef-core-2.2

我使用流畅的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-3d1ea7afed3fUserId。即使我尝试直接输入一个值,也会向我抛出相同的错误。

我什至尝试将其更改为非群集,因为可能由于此处所述的第三个原因而发生冲突:https://docs.microsoft.com/en-us/sql/relational-databases/indexes/create-clustered-indexes?view=sql-server-2017#Restrictions

但这并没有改变。谁能指出我可以解决该错误的方向?

0 个答案:

没有答案