数据库中的代码优先-无法将值NULL插入列'Id',但值实际上不为空

问题描述 投票:0回答:1

我尝试添加新记录:

                 entity.Id = Id;


                _bdc.EquifaxAnswers.Add(entity);

                _bdc.SaveChanges();

和ID准确定义为主键,并且代码中的ID具有值(表唯一)。和EF创建用于添加记录的sql代码:

 INSERT [dbo].[EquifaxAnswers]([FileName], [dtSend], [dtDateTime], [RecordsAll], [RecordsCorrect], 
[RecordsIncorrect], [ResendedId], [dtEmailAbout], [StartDate], [EndDate])
VALUES (@0, @1, @2, NULL, NULL, NULL, NULL, NULL, @3, @4)

而且我们可以看到那里的ID不存在,所以_bdc.SaveChanges(); create Exception:

在25毫秒内失败,并出现错误:无法将值NULL插入表'Equifax.dbo.EquifaxAnswers'的列'Id'中;列不允许为空。插入失败。

主键定义:

    public partial class EquifaxAnswers
{

    [Key]
    [DatabaseGenerated(DatabaseGeneratedOption.None)]
    public int Id { get; set; }

为什么EF不将Id添加到INSERT以及如何解决此问题?

sql-server entity-framework ef-code-first code-first
1个回答
0
投票

您已指定DatabaseGeneratedOption.None

这意味着EF不会期望数据库生成Id字段,因此您应该自己指定Id字段。

如果要数据库自动生成Id字段,则将该列更改为IDENTITY类型,并将代码更改为DatabaseGeneratedOption.Identity

© www.soinside.com 2019 - 2024. All rights reserved.